Как я могу отфильтровать талант и талант2 с помощью фильтра django
views.py
def get_ajax(self, request, *args, **kwargs):
talent= request.GET.get('talent', None)
users = User.objects.all().order_by('last_name')
if talent: user = users.filter(user_talent=talent) and users.filter(user_talent2=talent)
>models.py
def get_talent(self):
talent = f''
if self.user_talent:
talent = f'{self.user_talent}'
if self.user_talent2:
talent = f'{self.user_talent}, {self.user_talent2}'
return talent
Если вам нужно сопоставить оба поля так, чтобы both user_talent
и user_talent2
было равно talent
:
qs = users.filter(user_talent=talent, user_talent2=talent)
Если вам нужно сопоставить только одно из полей, такое, что либо user_talent
либо user_talent2
равно talent
(или может быть и то и другое):
from django.db import models
qs = users.filter(models.Q(user_talent=talent) | models.Q(user_talent2=talent))
Оба вызова вернут еще один QuerySet
. Вам может понадобиться вызвать, например, qs.first()
для получения первого элемента или просто изменить вызов с .filter()
на .get()
, если вы ожидаете, что это будет только 1 элемент.
Для справки, вот некоторые другие способы выполнения запросов: