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

标签 django

如何查看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/

相关文章:

python - Django 对与外键对象相关的组进行排序

Django - 如何让用户登录(ListView 中的 get_queryset)

django - 在 django 中的特定时间后自动注销用户

python - Django - 如何只允许新帖子的所有者编辑或删除帖子?

python - django __init__ 方法导致参数错误

python - 如何在 DRF 中使字段可编辑=False

python - 使用Django的抽象类来进行简单的代码复用是否合适?

html - django 模板继承 : how to NOT display block from parent?

python - 在 Django 中验证错误时将 css 类添加到字段

python - models.py 中的 models.Model 参数到底指的是什么?