如果字段为空/空白,请不要过滤。 [django查询]

时间:2015-03-22 19:40:33

标签: django django-queryset

我已添加以下查询。它的工作原理。现在我想扩展它。

    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')

field1ForeignKeyfield2是两个表格中的ManyToMany字段。

任何想法?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以在之前或之后使用其他过滤器来确保字段不为空。

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
)