6

我正在使用 Django 1.3 并尝试在模型条目上使用 .exists() 但得到下面列出的错误。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'
4

3 回答 3

16

exists() 是 a 的一种方法QuerySet

get()返回单个模型实例,如果该实例不存在将引发异常Entry.DoesNotExisttry/except因此,如果您不确定是否存在具有该实例的实例,则需要将其包装在一个块中id

于 2012-06-19T01:09:03.473 回答
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

于 2015-04-28T07:11:31.903 回答
0

尝试使用 .filter() 而不是 .get(),如下所示:

m = MyModel.objects.filter(pk=1).exists()
y = MyModel.objects.filter(pk=2).exists()
print(m)
print(y)

输出必须是布尔值,例如:

False
True

假设 m 不存在而 y 存在

于 2022-02-23T00:38:26.883 回答