如何检查Django表单是否保存以显示适当的反馈?

如何检查Django表单是否保存以显示适当的反馈?,django,django-models,django-forms,save,message,Django,Django Models,Django Forms,Save,Message,我正在使用Django 1.8。我想在视图中执行类似操作: if request.method == 'POST' and form.is_valid(): form.save() messages.success(request, 'Changes saved!') 但是如果save()失败,它仍然会显示一条成功消息。我如何确认保存是否确实成功 我想我可以将消息放入post\u save,但是消息本身的内容取决于ModelForm所使用的视图,而不是Model本身 谢谢 可能

我正在使用
Django 1.8
。我想在视图中执行类似操作:

if request.method == 'POST' and form.is_valid():
    form.save()
    messages.success(request, 'Changes saved!')
但是如果
save()
失败,它仍然会显示一条成功消息。我如何确认保存是否确实成功

我想我可以将消息放入
post\u save
,但是消息本身的内容取决于
ModelForm
所使用的视图,而不是
Model
本身


谢谢

可能有一种更整洁的方法,但您可以将其包装在
Try/Except
块中:

if request.method == 'POST' and form.is_valid():
    try:
       form.save()
    except:
       # raise exception or error message

    messages.success(request, 'Changes saved!')
这也是不雅观的,但是你可以加一个钩子。如果
created=True
,则它必须已保存

但是,如果表单有效,则不太可能未保存(除非数据库中存在事务错误)

如果
.save()
方法失败,Django应引发异常。你不应该为此担心。但是,如果您仍然想确定,您可以尝试执行过滤器,查看对象是否已创建

if request.method == 'POST' and form.is_valid():
    form.save()
    try:
        my_object = MyModel.objects.get(**form.cleaned_data) # retrieve the created object
        messages.success(request, 'Changes saved!')
    except MyModel.DoesNotExist:
        # Create error message for object not created
    except:
        # Create message for other exceptions

(但不建议进行此检查,因为它会导致额外的数据库命中。)

表单保存怎么会失败,但不会引发异常?