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

  • 相关阅读:
    常用的android弹出对话框
    Android 启动后台运行程序(Service)
    java 日期获取时间戳
    stringbuffer与stringbuilder的区别
    Linux记录-sysctl.conf优化方案
    Linux记录-salt分析
    Hadoop记录-fair公平调度队列管理
    Linux记录-GC分析
    Hadoop记录-hdfs转载
    Linux记录-salt-minion安装
  • 原文地址:https://www.cnblogs.com/yunen/p/11854418.html
Copyright © 2011-2022 走看看