我知道下面的函数可以用来做一些预保存处理。但是,如何访问请求数据,例如请求中的文本字段值以进行验证?
def save_model(self, request, obj, form, change):
# do something for validation
obj.save()
我知道下面的函数可以用来做一些预保存处理。但是,如何访问请求数据,例如请求中的文本字段值以进行验证?
def save_model(self, request, obj, form, change):
# do something for validation
obj.save()
原始请求数据通常存储在request.POST
中。访问 可能更好form.cleaned_data
,因为 Django 已经验证了它。
但是,该save_model
方法可能不是进行验证的正确位置。如果您提出 a ValidationError
,则不会捕获异常,并且用户将获得 500 服务器错误页面。当您知道数据已经有效时,该save_model
方法更合适,例如在保存之前设置对象的作者request.user
。
如果你想进行自定义验证,更好的方法是定义一个模型表单,并在你的模型管理中使用它的ModelAdmin.form
设置。
这也帮助了我很多!