Я вполне уверен, у Вас есть он право. И, SQL, который LINQ генерирует и отправит в Ваш дб, посмотрит точно так же, как SQL, который Вы запустили с, поэтому при выполнении немного большего количества ввода база данных не делает больше работы.
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
Не знаю, лучший ли это способ, но он также выполняет свою работу
Achievement.objects.filter(parent_achievement=1)
или
Achievement.objects.filter(parent_achievement__pk=1)