【发布时间】:2022-01-22 07:40:07
【问题描述】:
我有一个模型 WebDocuments 具有不同文档类型的多个对象,我想应用和条件
document_type= ['PAN', 'DL']
doc_obj = WebDocuments.objects.filter(is_active=True)
q_objects = Q()
if document_type:
q_objects &= [Q(type=doc) for doc in document_type]
check_obj = doc_obj.filter(q_objects)
if check_obj:
return True
return False
无论两种文档类型是否存在,我都想返回 True 或 False。 我的数据库中的两种文档类型仍然返回空,因为它在保存对象上过滤了两种类型。 有什么方法可以使用 and 运算符,或者我必须使用所有文档类型循环查询集
这是我的模型
class WebDocuments(TimeStampedModel):
uuid = models.UUIDField(default=uuid.uuid4, null=True, blank=True)
lead = models.ForeignKey(Lead, related_name='web_lead_document')
type = models.CharField(choices=DocumentTypeChoices.choices, max_length=100)
【问题讨论】:
-
一个
type只有一个值,不能同时是PAN和DL。 -
那么我如何检查这两种类型
-
您的意思是
or条件吗?所以你的结果集包含type=PANANDtype=DL的实例?那么它将是q_objects |= [Q(type=doc) for doc in document_type] -
@steveharvey:“and”条件没有意义。您可以检索具有
PAL或DL类型的Webdocument,但不能同时检索两者。 -
我想如果任何文件不存在它返回无
标签: python django django-rest-framework orm