使用多个字段筛选模型

2024-09-27 01:28:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: pyselfgetifrequestdefargsajax
1条回答
网友
1楼 · 发布于 2024-09-27 01:28:02

如果您需要匹配这两个字段,使user_talentuser_talent2都等于talent

qs = users.filter(user_talent=talent, user_talent2=talent)

如果只需要匹配其中一个字段,使得user_talentuser_talent2等于talent(或两者都可以):

from django.db import models
qs = users.filter(models.Q(user_talent=talent) | models.Q(user_talent2=talent))

两个调用都将返回另一个QuerySet。您可能需要调用qs.first()来获取第一个项目,或者如果您希望它仅为1个项目,则只需将调用从.filter()更改为.get()

以下是一些执行查询的其他方法,供您参考:

相关问题 更多 >

    热门问题