【发布时间】:2020-11-18 13:19:57
【问题描述】:
matched = Details.objects.filter(Q(cnp=cnp) | Q(phones__contains=[phone]) | Q(emails__contains=[email])).values('id')
class Details(models.Model):
...
cnp = models.CharField(max_length=24, blank=True)
phones = ArrayField(models.CharField(max_length=50), size=20, blank=True, default=list)
emails = ArrayField(models.EmailField(), size=20, blank=True, default=list)
你好!
我想进行查询,如果任何字段(cnp、电话或电子邮件)匹配以获取结果查询集。 cnp、电话和电子邮件变量将只获得一个值,我需要将其与 ArrayField 中的一个或多个值进行匹配。 我使用 Q 进行了上面的查询,但问题是我可以为电话或电子邮件变量提供空列表/字符串,然后匹配我的所有数据库。 如果我不使用 'contains',我可以匹配单值列表(来自 db ArrayField),但例如,如果我在 db 中有多个电子邮件,我需要将它与 'contains' 匹配以获得结果。 这是否可能仅来自 django 查询? 谢谢!
【问题讨论】:
标签: python django django-queryset