python - Django 检查单个字段是否有错误并且不运行 clean()?

标签 python django

有没有办法在 django 的 clean() 表单方法中检查单个字段是否未通过验证。

我不想手动检查是否存在必填字段:

def clean():
    cleaned_data = super().clean()
    half_day = cleaned_data.get('half_day')
    start_date = cleaned_data.get('start_date')
    end_date = cleaned_data.get('end_date')

    if start_date and end_date:
        if half_day:
            if start_date != end_date:
                self.add_error(
                    'half_day',
                    'Start and end date must be the same'    
                )

最佳答案

如果 start_dateend_date 声明为 blank=False, null=False(默认值),那么您可以这样做:

    def clean(self):

        cleaned_data = super(MyModelForm, self).clean()

        if not self.is_valid():
            return cleaned_data

        if cleaned_data.get('half_day'):
            if cleaned_data['start_date'] != cleaned_data['end_date']:
                self.add_error(
                    'half_day',
                    'Start and end date must be the same'    
                )

        return cleaned_data

super clean 会将请求返回到带有错误的模板,您将不必处理检查字段是否有值的问题。

关于python - Django 检查单个字段是否有错误并且不运行 clean()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47774470/

相关文章:

django - Django中clean_data有什么用

python - 字段中项目的 Django 计数

python - 使用对数轴刻度时 Matplotlib Latex 错误,版本相关

python - while 循环中是否需要 continue 语句?

javascript - Django 模板中的 moment.js 日期

python - Django 更改 Photologue 的应用程序名称

python - 在 django admin 中过滤下拉值

python - 如何从包中的同级模块导入?

c# - 如何使用 Python for .NET 正确嵌入

python - 南迁: "database backend does not accept 0 as a value for AutoField" (mysql)