如何查看值或对象是否在QuerySet字段中

时间:2011-07-02 01:00:19

标签: django

我如何查看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']这样的东西?谢谢。

1 个答案:

答案 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'