【问题标题】:Is there any way to read data from the django admin interface request for pre save validation?有没有办法从 django 管理界面请求中读取数据以进行预保存验证?
【发布时间】:2012-06-14 13:28:38
【问题描述】:

我知道下面的函数可以用来做一些预保存处理。但是,如何访问请求数据,例如请求中的文本字段值以进行验证?

    def save_model(self, request, obj, form, change):
        # do something for validation 
        obj.save()

【问题讨论】:

    标签: python django validation django-models django-admin


    【解决方案1】:

    原始请求数据存储在request.POST 中,通常是这样。访问form.cleaned_data 可能会更好,因为 Django 已经验证了它。

    但是,save_model 方法可能不是进行验证的正确位置。如果您提出ValidationError,则不会捕获异常,用户将获得 500 服务器错误页面。 save_model 方法在知道数据已经有效的情况下更合适,例如在保存前根据request.user 设置对象的作者。

    如果您想进行自定义验证,更好的方法是定义模型表单,并在模型管理中使用 ModelAdmin.form 设置。

    【讨论】:

    • 谢谢阿拉斯代尔!我从其他来源遇到过相同类型的解决方案。
    【解决方案2】:

    Custom form validation

    这对我也很有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 2014-09-13
      • 2016-05-08
      相关资源
      最近更新 更多