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属性的值。
    如果本文对你有帮助,记得点几下顶,让更多的人看见哟。

  • 相关阅读:
    伪多项式时间 Pseudo-polynomial time
    Aho-Corasick算法
    写给十八岁以下的你
    网络流算法
    Java static关键字
    带有负权边的最短路径问题
    Miller_Rabin(米勒拉宾)素数测试
    关于同余与模运算的总结
    UVa1585
    UVa修改版02
  • 原文地址:https://www.cnblogs.com/yunen/p/11854418.html
Copyright © 2011-2022 走看看