我想查看数据库中的行是否已包含特定输入。如果它已经存在,请阻止再次添加,如果没有,则按正常方式添加。
如果没有从数据库中提取所有内容以便检查,我如何询问数据库是否存在?
答案 0 :(得分:50)
您可以使用
Entry.objects.filter(name='name', title='title').exists()
这将返回true / false值。当你使用count时,orm生成的查询将比exists方法执行得更长。当对象不存在时,get方法将引发异常。
request.POST是一个字典,所以用它来检查db,即:
Entry.objects.filter(name=request.POST['name'], title=request.POST['title']).exists()
答案 1 :(得分:2)
您的问题的答案是“是”。但是,我认为您还应该研究查询数据库的替代方法;在您不希望存在重复项的字段集上创建唯一键。
现在,回答你的问题。查看Django文档以进行查询:
https://docs.djangoproject.com/en/dev/topics/db/queries/
简而言之,如果您有Thing的数据模型,Thing.objects是访问查询的接口。来自文档(使用博客条目,其中以字符串字段“标题”为例):
Entry.objects.get(headline__exact="Man bites dog")
接口的全部功能是您对数据库的期望(除了完全匹配之外,还有一组丰富的数据比较)。我建议您进一步查看有关特定问题的文档。