如何在Django中创建虚拟过滤器查询(始终匹配的过滤器)和从未匹配的排除查询。原因是因为在某些情况下查询为“无”,在这种情况下我想使用虚拟过滤器。这是代码:
MyModel.objects.filter(filterQuery).exclude(excludeQuery)
在
filterQuery
或excludeQuery
是None
的情况下,会出现错误,因此我想在该查询之前添加以下条件:if filterQuery == None: filterQuery = ???
if excludeQuery == None: excludeQuery = ???
MyModel.objects.filter(filterQuery).exclude(excludeQuery)
最佳答案
仅在需要时才执行过滤/排除操作,而不要使用空语句:
found = MyModel.objects.all()
if filterQuery:
found = found.filter(filterQuery)
if excludeQuery:
found = found.exclude(excludeQuery)