bgc*_*ode 0 django django-forms
我有以下表单代码:
class DisplaySharerForm(forms.Form):
ORDER_BY_CHOICES = (
('customer_sharer_identifier', 'customer_sharer_identifier'),
('action_count', 'action_count'),
('redirect_link', 'redirect_link'),
('enabled', 'enabled'),
('click_total', 'click_total')
)
DIRECTION = (
('DESC','DESC'),
('ASC', 'ASC')
)
#These are the sorting options. By default it's set to order by the customer_sharer_identifiers, descending, beginning at page 1.
order_by = forms.ChoiceField(choices=ORDER_BY_CHOICES, required=False,initial='customer_sharer_identifier')
direction = forms.ChoiceField(choices=DIRECTION, required=False,initial='DESC')
action_type_id = forms.IntegerField(required=False)
page_number = forms.IntegerField(required=False,initial=1)
Run Code Online (Sandbox Code Playgroud)
这是我尝试DisplaySharerForm使用初始值创建时得到的结果:
>>> f = DisplaySharerForm({})
>>> f.is_valid()
True
>>> f.cleaned_data
{'action_type_id': None, 'direction': u'', 'page_number': None, 'order_by': u'', 'customer_sharer_identifier': None}
Run Code Online (Sandbox Code Playgroud)
为什么没有cleaned_data设置我提供的初始值,我该怎么做才能修复它?
cleaned_data返回绑定到表单的数据的已清理值.在这种情况下,您已将字典绑定并清空到表单.在initial_data用于初始形式显示和看到哪些值已经改变.您可以使用自定义清理功能"修复"此问题:
class DisplaySharerForm(forms.Form):
...
def clean(self):
cleaned_data = super(DisplaySharerForm, self).clean()
for key, value in cleaned_data.items():
if not value and key in self.initial:
cleaned_data[key] = self.initial[key]
return cleaned_data
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |