如果字段为 empty/blank,则不想过滤。 [django 查询]

Don't want to filter if field is empty/blank. [django queries]

我添加了以下查询。它有效。现在我想扩展它。

    return self.model.objects.filter((
        Q(field1=F('p__field1')) |
        Q(field2=F('p__field2'))),
        user=user
    )

如果 F('p__field1')empty/blank。然后我不想将其包含在过滤器 Q(field1=F('p__field1') 中。 (换句话说,我不过滤这个。)

F('p__field2')也是如此。

field1ForeignKey 并且 field2 是两个表中的 ManyToMany 字段。

有什么想法吗?感谢您的帮助。

您可以在确保字段不为空之前或之后使用附加过滤器来完成此操作。

model_filter = Q()
if self.model.p.field1:
    model_filter |= Q(field1=F('p__field1'))
if self.model.p.field2:
    model_filter |= Q(field2=F('p__field2'))
return self.model.objects.filter(user=user).filter(
    model_filter
)