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

Я работаю над довольно сложным запросом на django. Запрос должен проверить все экземпляры модели Student и проверить, есть ли у любых двух экземпляров 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')

Вернуться на верх