Сравните существующие экземпляры модели Django для сопоставления полей?

#django #django-models #django-queryset

Вопрос:

Я работаю над довольно сложным запросом django. Запрос должен проверить все экземпляры Student модели и проверить, есть ли в каких-либо 2 экземплярах 2 совпадающих поля базы данных.

До сих пор у меня есть это, которое работает, если я ввожу жестко закодированный поисковый запрос или значение извлекается из значения ввода формы.

 Student.objects.annotate(
            match_count=Case(When(full_name='hardcodedvalue', then=1), default=0,
                                              output_field=IntegerField())).annotate(
            match_count=F('match_count')   Case(When(phone_number='hardcodedvalue', then=1), default=0,
                                                output_field=IntegerField())).annotate(
            match_count=F('match_count')   Case(When(student_email='hardcodedvalue', then=1), default=0,
                                                output_field=IntegerField())
        ).filter(match_count__gt=1)
 

Это отлично работает по сравнению с жестко закодированным значением, которое на самом деле является вводом формы. Если какие-либо 2 поля совпадают, то он возвращает правильный результат.

Теперь я изо всех сил пытаюсь выполнить запрос аналогичным образом, чтобы выполнить запрос к элементам, уже существующим в базе данных. Мне нужно запустить проверку, которая вместо проверки ввода формы проверяет все поля Student моделей.

Например, полное имя должно быть проверено… full_name=Student.objects.all().value('full_name')