Django: Как следовать за ForeignKey ('сам') назад

Я вполне уверен, у Вас есть он право. И, SQL, который LINQ генерирует и отправит в Ваш дб, посмотрит точно так же, как SQL, который Вы запустили с, поэтому при выполнении немного большего количества ввода база данных не делает больше работы.

10
задан Paul Tarjan 12 July 2009 в 00:28
поделиться

2 ответа

By default, django will call the reverse the model name, followed by "_set", so it would be

Achievement.objects.get(pk="1").achievement_set

If that doesn't suit you, use the related_name optional argument to 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
16
ответ дан 3 December 2019 в 21:22
поделиться

Не знаю, лучший ли это способ, но он также выполняет свою работу

Achievement.objects.filter(parent_achievement=1)

или

Achievement.objects.filter(parent_achievement__pk=1)
1
ответ дан 3 December 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: