python - 如何在基于 ORM 异常的 Django 视图中引发异常
问题描述
而不是这样做,例如:
视图.py:
my_noob_way(request):
object = Object.objects.filter(name=request.POST.get('name', None))
if not object:
Object.objects.create(name=request.POST.get('name', None))
data = {'success': True, 'message': 'Object successfully created.'}
else:
data = {'success': False, 'message': 'Object already exists.'}
return JsonResponse(data)
而不是这样做,我想避免这filter
条线(额外的垃圾查询),只执行一个create
内部 atry
并用except
. 我怎样才能做到这一点?我不知道该放什么except:
(太宽泛的例外条款)。
解决方案
您可以使用get_or_create
my_noob_way(request):
object, created = Object.object.get_or_create(name=request.POST.get('name', None))
message = 'Object successfully created.' if created else 'Object already exists.'
return JsonResponse({'success': created, 'message': message})
推荐阅读
- java - 如何在java中重命名MultiPartFile格式的文件
- typescript - 枚举上的静态方法
- php - CryptoJS AES 加密,然后在 PHP 中使用 openssl_decrypt 解密
- java - java并发:CopyOnWriteArrayList策略
- wordpress - WordPress - 如何减小 wp_old_cache 表的大小?
- reactjs - Aframe-React gltf2 模型已加载但为空
- c - 将 4 个八位字节的有符号值和 1 个字节的无符号值组合在一起以执行特定功能
- android - React 原生开发 - mapbox。面临的问题进程'命令'cmd''以非零退出值1完成
- java - 复制实例后 CORS 无法正常工作
- c# - 从checkedlistbox获取CheckedItems字符串值