我有模特:
class Profile:
...
phone = models.CharField(max_length=50, blank=True, null=True)
...
当我运行queryset时:
Profile.objects.exclude(phone='', phone__isnull=True).values('phone')
它创建SQL代码:
SELECT "user_profile_profile"."phone" FROM "user_profile_profile" WHERE NOT ("user_profile_profile"."phone" IS NULL AND "user_profile_profile"."phone" = '' AND "user_profile_profile"."phone" IS NOT NULL); args=('',)
这是错误的,因为它返回所有电话,包括phone = None和phone =''。
答案 0 :(得分:1)
您需要将exclude
条件分为两部分:
Profile.objects.exclude(phone='').exclude(phone__isnull=True).values('phone')
或使用Q
对象
from django.db.models import Q
Profile.objects.exclude(Q(phone='')|Q(phone__isnull=True)).values('phone')