【问题标题】:django orm AND condition for same key with multiple options具有多个选项的相同键的 django orm AND 条件
【发布时间】: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只有一个值,不能同时是PANDL
  • 那么我如何检查这两种类型
  • 您的意思是or 条件吗?所以你的结果集包含 type=PAN AND type=DL 的实例?那么它将是q_objects |= [Q(type=doc) for doc in document_type]
  • @steveharvey:“and”条件没有意义。您可以检索具有PALDL 类型的Webdocument,但不能同时检索两者。
  • 我想如果任何文件不存在它返回无

标签: python django django-rest-framework orm


【解决方案1】:

参考这些 - https://www.geeksforgeeks.org/multiplechoicefield-django-forms/ https://www.teckiy.com/support/questions/how-to-setup-multi-choice-field-in-django-along-with-django-filter-3033665043/

或创建新的模型命名Type,并将其添加到类型为多对多字段的WebDocuments模型中,然后进行查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多