Сравнить существующие экземпляры модели 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')