Django在多个字段上查询对象Q?

时间:2014-02-21 05:36:07

标签: django python-2.7 django-q

我有一个Django模型

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)

现在我想搜索用户。问题是我什么时候

Q(first_name__icontains=search_string) | Q(last_name__icontains=search_string) 

它只分别在first_name和last_name中搜索。但是,如果有人在搜索栏中键入整个名称,则不会给出任何结果,因为整个名称(first_name + last_name)不包含在first_name或last_name中。 我不想更改我的模型,但在搜索时动态查询字段组合(first_name + last_name),有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

如果您有多个按空格分割的单词并使用istartswith。检查它是单个字还是多个,如果单独使用当前搜索,则分割并使用如下所示。

Q(first_name__istartswith =“Firstname”)| Q(last_name__istartswith =“名字”)|     Q(first_name__istartswith =“姓氏”)| Q(last_name__istartswith = “姓氏”)     )