#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')