Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python objects.filter以获取字符串是否包含在一个或其他字段中_Python_Django - Fatal编程技术网

Python objects.filter以获取字符串是否包含在一个或其他字段中

Python objects.filter以获取字符串是否包含在一个或其他字段中,python,django,Python,Django,我正在尝试用查询筛选我的客户用户可以在同一字段中查找cif代码和客户名称,因此我不知道他是在查找一件事还是另一件事。 我试图弄清楚如何在不排除另一个字段的情况下过滤这两个字段。 我试着举个例子: 我的客户表上有: [ { "company_name":"Best Bar EUW", "cif":"ABCD1234" }, { "comp

我正在尝试用查询筛选我的客户用户可以在同一字段中查找cif代码和客户名称,因此我不知道他是在查找一件事还是另一件事。 我试图弄清楚如何在不排除另一个字段的情况下过滤这两个字段。 我试着举个例子:

我的客户表上有:

[
    {
        "company_name":"Best Bar EUW",
        "cif":"ABCD1234"
    },
    {
        "company_name":"Word Bar EEUU",
        "cif":"POIU4321"
    },
    {
        "company_name":"Not a bad bar",
        "cif":"MNVB1321"
    }
]
现在我想寻找“EE”字符串:我想要的结果是第二个对象,但字符串“EE”不包含在“cif”中,因此它不会给出我想要的结果,因为它包含在一个字段中,而不包含在另一个字段中

这是我的客户模型:

class Client(LogsMixin, models.Model):
    """Model definition for Client."""

    company_name = models.CharField("Nombre de la empresa", max_length=150, default="Nombre de empresa", null=False, blank=False)
    user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
    cif = models.CharField("CIF", null=False, default="", max_length=50)
    platforms = models.ManyToManyField('consumptions.Platform', verbose_name=("Plataformas"))
    dateadded = models.DateTimeField("Fecha de inserción", default=datetime.datetime.now)
我能用这个做什么

提前谢谢

与查找一起使用逻辑OR

从django.db.models导入Q
搜索关键字=“EE”
或_expression=Q(公司名称uuuu contains=search_关键字)| Q(cif_uucontains=search_关键字)
Client.objects.filter(或_表达式)
将逻辑or与查找一起使用

从django.db.models导入Q
搜索关键字=“EE”
或_expression=Q(公司名称uuuu contains=search_关键字)| Q(cif_uucontains=search_关键字)

Client.objects.filter(或_expression)
这就是我所说的问题:如果我查找EEUU,它不会给我第二个结果,因为它包含在公司名称中,但不包含在CIFU中。什么是搜索字符串?在OP中,您提到它是
EE
,而不是
EEUU
,这是不相关的,“EE”和“EEUU”包含在第二个值的“company_name”中,但不包含在cif中。然后,您只需要查看
company_name
字段。(更新了答案)没有,因为用户可能希望查找cif而不是公司名称,这是同一个问题。如果用户查找代码,例如“POIU4”,但该代码未包含在公司名称中,则不会显示该值。记住,相同的字段用于查找cif和公司名称。这就是我所说的问题:如果我查找EEUU,它不会给我第二个结果,因为它包含在公司名称中,但不包含在cif中。您的搜索字符串是什么?在OP中,您提到它是
EE
,而不是
EEUU
,这是不相关的,“EE”和“EEUU”包含在第二个值的“company_name”中,但不包含在cif中。然后,您只需要查看
company_name
字段。(更新了答案)没有,因为用户可能希望查找cif而不是公司名称,这是同一个问题。如果用户查找代码,例如“POIU4”,但该代码未包含在公司名称中,则不会显示该值。记住,相同的字段用于查找cif和公司名称。
from django.db.models import Q

search_keyword = "EE"
or_expression = Q(company_name__contains=search_keyword) | Q(cif__contains=search_keyword)
Client.objects.filter(or_expression)