我有一个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),有没有办法做到这一点?
答案 0 :(得分:0)
如果您有多个按空格分割的单词并使用istartswith。检查它是单个字还是多个,如果单独使用当前搜索,则分割并使用如下所示。
Q(first_name__istartswith =“Firstname”)| Q(last_name__istartswith =“名字”)| Q(first_name__istartswith =“姓氏”)| Q(last_name__istartswith = “姓氏”) )