如果字段为 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')
也是如此。
field1
是 ForeignKey
并且 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
)
我添加了以下查询。它有效。现在我想扩展它。
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')
也是如此。
field1
是 ForeignKey
并且 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
)