【问题标题】:Django Query object Q on multiple fields?多个字段上的Django查询对象Q?
【发布时间】:2014-03-22 11:26:24
【问题描述】:

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

【问题讨论】:

  • 您可以split搜索字符串并在各自的字段中搜索2个字符串。

标签: django python-2.7 django-q


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-06-23
    • 2010-12-27
    • 2014-02-06
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多