gpt4 book ai didi

python - Django try/except on DoesNotExist 仍然抛出它

转载 作者:行者123 更新时间:2023-11-28 18:08:27 27 4
gpt4 key购买 nike

我正在努力解决我的应用程序中的 DoesNotExist 错误。关键是我真的不明白为什么会抛出这个错误,因为我已经处理过了:

import socket

from django.core.exceptions import ObjectDoesNotExist
from django.db import Models

class MyClass(models.Model):
name = models.CharField(max_length=250, default=socket.gethostname(), unique=True)
@staticmethod
def update_some_list(some_list):
for some_item in some_list:
try:
MyClass.objects.get(name=some_item)
except ObjectDoesNotExist: # I also tried with MyClass.DoesNotExist
MyClass.objects.create(name=some_item)

这里的重点是,当我遇到这段代码时,我有一些被丢弃的“模块级”DoesNotExist,就好像这个 try/except block 永远不会被命中:

Traceback (most recent call last):
File "/app/backend/shared/models.py", line 201, in update_some_list
MyClass.objects.get(name=some_item)
File "/usr/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 399, in get
self.model._meta.object_name
shared.models.DoesNotExist: MyClass matching query does not exist.

最佳答案

考虑使用 QuerySet.get_or_create ,这将消除上述问题。

MyClass.objects.get_or_create(name=some_item)

此外,请注意,如果您访问 @staticmethod 中的类将其更新为 @classmethod 是有意义的.另外,在您遇到的问题中:

from django.db import Models

代替 从 django.db 导入模型

关于python - Django try/except on DoesNotExist 仍然抛出它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52254747/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com