我正在使用Django 1.3并尝试在模型条目上使用.exists()但是得到下面列出的错误。存在()包含在Django 1.2中,所以我应该可以访问它。我使用django.get_version验证了我的版本,没关系。 基于pk查询MyModel仅返回一个条目,但使用.exists()查询会引发错误。我需要进口东西吗?
>>> m = MyModel.objects.get(pk=1)
>>> m
<MyModel: Model field entry 1>
>>> m = MyModel.objects.get(pk=1).exists()
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'MyModel' object has no attribute 'exists'
答案 0 :(得分:10)
exists()
is a method of a QuerySet
。
get()
返回单个模型实例,will raise an exception Entry.DoesNotExist
if that instance doesn't exist。因此,如果您不确定是否存在try/except
的实例,则需要将其包装在id
块中。
答案 1 :(得分:0)
我在我的项目中使用Django 1.7,我的代码如下:
try:
temp_query_set = YourModelName.functionName()
except ObjectDoesNotExists:
<do something>
请注意,我的代码(起初)使用if query_set.exists()
当没有返回查询集时它可以正常工作,但是当返回某些内容时引发错误object does not have attribute 'exists'
。
所以请尽量避免使用if <something>.exists()
CMIIW