Как запросить OneToOne отношение объекта related_name в django

#django #django-orm #one-to-one

#django #django-orm #один к одному

Вопрос:

У меня есть эта модель:

 class ProgramRequirement(Model):
    program = OneToOneField(Program, related_name='program_requirement')
    prereq_program = ForeignKey(Program, related_name='prereq_program_requirement')
    is_english_required = BooleanField()
 

и эта модель

 class Program(Model):
    field_1 = ...
    field_3 = ...
 

Мне нужно написать запрос, который вернул бы первичный ключ программ, для которых is_english_required для prereq_program является True .

Я пробовал это, но, похоже, это неправильный запрос:

 ProgramRequirement.objects.filter(prereq_program__prereq_program_requirement__is_english_required =True).values_list('program__pk', flat=True)
 

Однако он не возвращает правильный результат.

Я не уверен, что это то, что я хочу, но я тоже думаю об этом:

 Program.objects.filter(prereq_program_requirement__is_english_required =True).values_lis('pk', flat=True)
 

Есть идеи о том, как получить вышеупомянутый результат?

Комментарии:

1. Ваш последний запрос кажется прекрасным (для меня).

Ответ №1:

Вы можете попробовать:

 ProgramRequirement.objects.filter(prereq_program__programrequirement__is_english_required = True).values('pk')