如何在Django Form的clean()方法中获取auto_id?

时间:2012-01-16 00:47:06

标签: python django django-forms

假设我有以下代码:

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 个答案:

答案 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属性。

我不确定这样做是否可行,我是第一次这样做,所以在你调查它没问题之前我不建议使用它。)