假设我有以下代码:
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响应中包含这些信息。
答案 0 :(得分: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
属性。
我不确定这样做是否可行,我是第一次这样做,所以在你调查它没问题之前我不建议使用它。)