0

我有一个 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)动态查询,有什么办法吗?

4

1 回答 1

0

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

Q(first_name__istartswith="Firstname") | Q(last_name__istartswith="Firstname") | Q(first_name__istartswith="Lastname") | Q(last_name__istartswith="Lastname") )

于 2014-02-21T06:37:07.690 回答