如何检查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
(但不建议进行此检查,因为它会导致额外的数据库命中。)表单保存怎么会失败,但不会引发异常?