Обратный поиск на поле Django m2m? - PullRequest
2 голосов
/ 14 апреля 2011

У меня есть объект Django под названием «Семья».У «Family» есть переменная «children», которая представляет собой поле «многие ко многим» класса с именем «Child».

Если у меня есть объект «Child», есть ли способ получить объект семейства длякому принадлежит ребенок?

Child some more fields... Family children = models.ManyToManyField(Child) some more fields...

Ответы [ 2 ]

4 голосов
/ 14 апреля 2011

Django автоматически создает обратную связь для вас в этом случае, поэтому с экземпляром модели Child вы можете найти все экземпляры Family, к которым принадлежит ребенок:

c = Child.objects.get(id=1)
c.family_set.all()  # gives you a list of Families

Поскольку маловероятно, что ребенок будет принадлежать к нескольким семьям, на самом деле это не ситуация «многие ко многим». Вы можете рассмотреть возможность моделирования отношений на дочернем объекте:

class Family(models.Model):
    pass # your fields here

class Child(models.Model):
    family = models.ForeignKey(Family)

Таким образом, вы можете получить семью для ребенка, используя mychild.family, и всех детей в семье, используя автоматическую обратную связь django myfamily.child_set.all().

2 голосов
/ 14 апреля 2011

См. http://docs.djangoproject.com/en/dev/topics/db/queries/#many-to-many-relationships

Синтаксис child.family_set.all(), но его можно изменить с помощью параметра related_name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...