如何在Django Form的clean()方法中获取auto_id?
假设我有以下代码:
class AForm(forms.Form):
field = forms.ChoiceField(
choices=(
('a', _('Some option')),
),
widget=forms.Select()
)
def clean(self):
cd = self.cleaned_data
widget_id = # How do I get the auto generated id here?
我知道在模板中可以获取到 auto_id
,但是我想把这些信息也包含在我们的 AJAX 响应中。
1 个回答
1
我刚刚看了Django的表单代码,发现这样做应该是可行的:
class AForm(forms.Form):
...
def clean(self):
cd = self.cleaned_data
widget_id = self['field'].auto_id
这里的关键是我们使用 Form['field']
,这实际上会调用 BaseForm.__getitem__
,然后返回一个 BoundField
实例。 BoundField
有一些有趣的属性,比如 auto_id
。看起来它会遵循表单的 prefix
属性。
我不太确定这样做是否合适,我是第一次尝试,所以在你确认没问题之前,我不建议你使用这个 :)