Como posso escrever um método dentro de um modelo de Django para recuperar objetos relacionados?

votos
2

Eu tenho dois modelos. Vamos chamá-los de objeto A e objeto B. Seu design é algo como isto:

class Foo(models.Model):
     name = models.CharField()

class Bar(models.Model):
     title = models.CharField()
     Foo= models.ForeignKey('myapp.Foo')

Agora, suponha que eu quero fazer um método dentro Foo que retorna todos os objetos Bar que fazem referência a essa instância do Foo. Como eu faço isso?

class Foo(models.Model):
     name = models.CharField()
     def returnBars(self):
         ????
Publicado 21/10/2008 em 10:49
fonte usuário
Em outras línguas...                            


1 respostas

votos
10

Você ganha isso de graça:

http://docs.djangoproject.com/en/dev/topics/db/queries/#backwards-related-objects

Por padrão, você pode acessar um gerente que lhe dá acesso a itens relacionados através de um RELATEDCLASSNAME_setatributo:

some_foo.bar_set.all()

Ou você pode usar o related_nameargumento para ForeignKeyespecificar o atributo que deve manter a relação inversa Representante:

class Foo(models.Model):
     name = models.CharField()

class Bar(models.Model):
     title = models.CharField()
     foo = models.ForeignKey(Foo, related_name='bars')

...

some_foo.bars.all()
Respondeu 21/10/2008 em 10:54
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more