我陷入了一个看似简单的问题。如果sold_data
为空,我想要执行不同的查询集。有没有有效的方法来做到这一点?或者我是否需要使用for循环并遍历所有列表对象并检查每个对象?
class Listing(models.Model):
list_price = models.IntegerField()
sold_price = models.IntegerField(null=True, blank=True)
... other fields
data = Listing.objects.filter(...) # Note: I had already made other queries
if sold_price == None:
data = data.filter(list_price__gte=1)
else:
data = data.filter(sold_price__gte=1)
答案 0 :(得分:1)
如果您想检查对象是否为None,请使用is
运算符
我不确定我是否理解你的问题是我得到的:如果数据包含一个空值的对象,你想过滤list_price否则过滤器sold_price
你可以试试这个
if data.filter(sold_price__isnull=True).exists():
data = data.filter(list_price__gte=1)
else:
data = data.filter(sold_price__gte=1)
答案 1 :(得分:1)
您可以使用Q object
。
from django.db.models import Q
# your filtered queryset is in 'data' varibale
data.filter(Q(sold_price__isnull=False, sold_price__gte=1) | Q(sold_price__isnull=True, list_price__gte=1))