计算模型实例的数量

时间:2014-07-04 18:20:17

标签: django django-models unique

假设我有一个名为User的模型,其中有一个名为name的字段。如何确定数据库中是否已存在具有特定名称User的{​​{1}}实例?

我能做到:

Andrew

但有没有办法可以在一行中完成此操作,而无需检索所有实例然后对它们进行计数?

2 个答案:

答案 0 :(得分:4)

是的,您可以使用exists()

if User.objects.filter(name='Andrew').exists():
    # do something

但可能有多个用户同名。您可能希望查找某个唯一字段,例如用户名或电子邮件

如果你想坚持使用count方法,那么它可以写成:

if User.objects.filter(name = 'Andrew').count() > 0:
    # exists

答案 1 :(得分:2)

Ask for forgiveness:让它尝试创建重复并处理IntegrityError例外。

您需要在name字段中定义unique=True才能使其正常工作:

  

Field.unique

     

这是在数据库级别和模型验证中强制执行的。如果你   尝试在唯一字段中保存具有重复值的模型,a   django.db.IntegrityError将由模型的save()方法引发。