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屬性的值。
如果本文對你有幫助,記得點幾下頂,讓更多的人看見喲。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM