python - clean_data 何时填充到 Django 中

标签 python django django-forms

我有一个 model_formset,使用 can_delete=True 创建,并将相应的 form.DELETE 复选框添加到模板中。 当我收到 POST 请求时,我尝试保存表单:

if formset.is_valid():
    formset.save()

但是,在 is_valid 方法中,django 确定删除的表单不会被删除,当然,它不会验证。

我检查了源代码,似乎“DELETED”没有进入clean_data。 Django 执行此检查:

def _should_delete_form(self, form):
    return form.cleaned_data.get(DELETION_FIELD_NAME, False)

我检查了 request.POST 字典,检查就在那里,这意味着它应该在 clean_data 字典中。

这个字典什么时候填充,以便我可以进一步跟踪问题?我似乎没有找到它并怀疑它与某些元类有关

最佳答案

您必须深入了解一下源代码:

首先,is_valid is defined as

def is_valid(self):
    """
    Returns True if the form has no errors. Otherwise, False. If errors are
    being ignored, returns False.
    """
    return self.is_bound and not self.errors

self.errors is a property

@property
def errors(self):
    "Returns an ErrorDict for the data provided for the form"
    if self._errors is None:
        self.full_clean()
    return self._errors

调用 self.full_clean() 。现在这个方法已经

self._clean_fields()
self._clean_form()
self._post_clean()

填充cleaned_data并进行必要的验证/处理。

关于python - clean_data 何时填充到 Django 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24901539/

相关文章:

python - 运行位于 GCS 中的 .PY 脚本

python - Django REST 框架 : read-write Custom Relational Fields

html - 未提交 Django 表单

django - 如何在 success_url 中传递上下文数据?

python - 延迟输出到日志文件

python - 向量表示 matlab 与 numpy

python - 使用带有 Flask 的 Authlib 获取和存储刷新 token

python - Django 如何调试查询集对象上的卡住保存操作

Django FilePathField 引发文件未找到错误

python - 获取不属于不同模型的多对多关系的对象?