在Django表单清理函数中,如何可靠地测试是否填写了可选字段?

时间:2012-01-05 15:27:12

标签: django django-forms

在Django中,我有一个带有干净功能的表单类。在这个干净的功能中,我检查是否填写了可选的选择框。

def clean_session_1(self):
    # Check if session_1 is filled out. 
    if self.cleaned_data['session_1']:
        # more validation
    return self.cleaned_data['session_1']

如果填写了选择框,则会对该字段进行更多验证。

出于某种原因,此代码不测试该字段是否已填写并且每次都运行“更多验证”。

我想知道如果这个字段“session_1”被填写,如何可靠地测试?谢谢!

2 个答案:

答案 0 :(得分:1)

访问self._raw_value('key')以获取表单字段中的原始条目(即只是文本,而不是处理为python对象)。

更新:正如Ahsan所说,用clean方法做。您也应该调用超类清理方法。

答案 1 :(得分:0)

你可以用表格的干净方法检查

def clean(self):
    data = self.data # data contains all fields, optional or required both
    optional_field = data.get('optional_field', None)
    # more validation
    return optional_field