我如何查看QuerySet中是否有值?
例如,如果我有以下型号:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
first_name = models.CharField(max_length=50)
如何判断firstSet是否包含在QuerySet中?一种方法来执行以下操作:
ld = UserProfile.objects.filter(...).values('first_name')
>>> for object in ld:
... if object['first_name'] =='David':
... print True
或者,如果是特定的用户对象?像'David' in QuerySet['first_name']
这样的东西?谢谢。
答案 0 :(得分:36)
最简单的方法是使用经理的get
方法:
try:
foo = Foo.objects.get(foo_name='David')
except Foo.DoesNotExist:
print 'Nope'
except Foo.MultipleObjectsReturned:
print 'Filter is a better choice here'
如果您不需要获取对象,exists
方法也适用:
if Foo.objects.filter(foo_color='green').exists():
print 'Nice'
如果您已拥有该对象并想确定它是否包含在查询集中:
foo = Foo.objects.get(foo_name='David')
qs = Foo.objects.filter(<criteria>)
if foo in qs:
print 'Nice again'
如果要使用值而不是对象:
value = 'David'
qs = Foo.objects.filter(<criteria>).values_list('foo_name',flat=True)
if value in qs:
print 'Nice'