2014-02-21 74 views
0

我有一个Django模型Django在多个字段上查询对象Q?

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)动态查询,有没有办法做到这一点?

+0

您可以“分割”搜索字符串并在各个字段中搜索2个字符串。 – Rohan

回答

0

如果你有多个单词按空格拆分并使用istartswith。检查它是否是单个单词或多个单词,如果单独使用您当前的搜索,则使用下面的方式进行拆分和使用。

Q(first_name__istartswith =“Firstname”)| Q(last_name__istartswith =“Firstname”)| Q(first_name__istartswith =“Lastname”)| Q(last_name__istartswith =“Lastname”) )