Как я могу отфильтровать талант и талант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 элемент.

Для справки, вот некоторые другие способы выполнения запросов:

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