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