假设我有一个名为User
的模型,其中有一个名为name
的字段。如何确定数据库中是否已存在具有特定名称User
的{{1}}实例?
我能做到:
Andrew
但有没有办法可以在一行中完成此操作,而无需检索所有实例然后对它们进行计数?
答案 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()方法引发。