如何查看QuerySet中是否有值?
例如,如果我有以下模型:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
first_name = models.CharField(max_length=50)
我如何确定QuerySet中是否包含first_name“David”?一种执行以下操作的方法:
ld = UserProfile.objects.filter(...).values('first_name')
>>> for object in ld:
... if object['first_name'] =='David':
... print True
还是改为使用特定的用户对象?像
'David' in QuerySet['first_name']
一样?谢谢。
最佳答案
最简单的方法是使用管理器的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'
关于django - 如何查看值或对象是否在QuerySet字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6554481/