zoukankan      html  css  js  c++  java
  • Django表单Form类对空值None的替换

    最近在写项目的时候用到Form,发现这个类什么都好,就是有些空值的默认赋值真是很不合我胃口。
    查阅资料、官方文档后发现并没有设置该值的方式。于是,便开始了我的踩坑之路......
    不过现在完美解决了,方法也挺简单的。
    简单的说:建一个基础类,重载form.Forms的clean函数。
    下边给出例子:

    class BaseForm(forms.Form):
        # 重载clean方法
        def clean(self):
            # 遍历字典
            cleaned_data = {}
            for key, value in self.cleaned_data.items():
                if value == None:
                    cleaned_data[key] = self.fields[key].initial
                else:
                    cleaned_data[key] = value
            return cleaned_data
    

    这里我选择将他的值设置为Field中的initial属性的值,便于我维护。
    具体的Form类继承BaseForm类即可。
    如:

    class NewForm(BaseForm):
        name = forms.CharField(label='名称')
        age = form.IntegerField(
            label='年龄',
            required=False
    )
    

    测试数据为:

    name=test&age=
    

    age的值为空,此时如果继承的form.Form类,那么cleaned_data的值为:

    {'name': 'test', 'age': None}
    

    这是我不愿看到的结果,虽然部分Field存在empty_value属性可以设置,不过目前IntegerField字段并没有该属性值,使用本文方法即可将None值修改为自己定义的initial属性的值。
    如果本文对你有帮助,记得点几下顶,让更多的人看见哟。

  • 相关阅读:
    Java基础学习(五) String类
    Java基础学习(四) java8线程
    Java基础学习(三) IO
    Java基础学习(二) 集合
    Java基础学习(一) 基本数据类型和引用数据类型
    枚举类常见漏洞解决
    数据校验
    postman如何传递token进行接口测试
    Spring Cloud-OpenFegin
    SpringCloud-Eureka
  • 原文地址:https://www.cnblogs.com/yunen/p/11854418.html
Copyright © 2011-2022 走看看