Jello!Django - выберите модель, связанная с самим собой
Я работаю с django прямо сейчас, и у меня есть проблема, которая, как я подозреваю, имеет простое решение, но у меня было много трудностей с ее поиском (большинство ключевых слов, как правило, указывают google на неправильные места).
Я ищу, чтобы отфильтровать запрос на основе критериев, которые: Модель имеет поле, которое указывает на себя.
Я приведу пример:
class Person(models.Model):
name = models.CharField(max_length=20)
parent = models.ForeignKey('app.Person', null=True)
gramps = Person.objects.create(name='Tod', parent=None)
pops = Person.objects.create(name='Hank', parent=gramps)
sonny_boy = Person.objects.create(name='Tim', parent=pops)
temporal_paradox_dude = Person.objects.create(name='Emmett')
temporal_paradox_dude.parent = temporal_paradox_dude
temporal_paradox_dude.save()
temporal_paradox_dude_2 = Person.objects.create(name='Arnold')
temporal_paradox_dude_2.parent = temporal_paradox_dude_2
temporal_paradox_dude_2.save()
Таким образом, вопрос, в этом случае, как я могу запросить Person
таблицу только людей, которые временно парадоксальным?
>>> Person.objects.filter(parent=SOME_WAY_OF_DECLARING_ITSELF)
[ 'Emmett', 'Arnold' ]
Что мне нужно сделать, чтобы заменить SOME_WAY_OF_DECLARING_ITSELF
с тем чтобы получить модели, которые ссылаются на себя?
Спасибо!
https://docs.djangoproject.com/en/1.7/ref/models/queries/ –
I Поверьте, это очень то, что я ищу! Не могли бы вы быстро объяснить, почему в вашем примере это 'parent_id' вместо' parent'? Мне кажется, что он должен по крайней мере быть «parent__id». –
parent_id - это имя прямого столбца в таблице. –