首页 > 解决方案 > 如何在基于 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:(太宽泛的例外条款)。

标签: pythonjsondjangoormmodel

解决方案


您可以使用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})

推荐阅读