Вопрос по django-models, django, foreign-keys – Джанго: Как следовать за ForeignKey («я») задом наперед
class Achievement(MyBaseModel):
parent_achievement = models.ForeignKey('self', blank=True, null=True, help_text="An achievement that must be done before this one is achieved") # long name since parent is reserved
Я могу сделать :
Achievement.objects.get(pk="1").parent_achievement
это здорово. Но как мне получить всех детей?
Achievement.objects.get(pk="1").parent_achievement_set
не работает (и, вероятно, должно иметь несколько обозначений вокруг него), и я не вижу слишком много при поиске.
Является ли это возможным? Попасть в SQL?
2
ответа
По умолчанию django будет вызывать имя модели в обратном порядке, после чего следует "_set", поэтому это будет
Achievement.objects.get(pk="1").achievement_set
Если вам это не подходит, используйтеrelated_name
необязательный аргументmodels.ForeignKey
:
class Achievement(MyBaseModel):
parent_achievement = models.ForeignKey(
'self',
blank=True,
null=True,
help_text="An achievement that must be done before this one is achieved",
related_name="child_achievement_set"
) # long name since parent is reserved
Achievement.objects.get(pk="1").child_achievement_set
замечательно. отлично работал купил бы снова. A ++
Paul Tarjan