的形式框架將出現在這裏生成標籤:
def _id_for_label(self):
"""
Wrapper around the field widget's `id_for_label` class method.
Useful, for example, for focusing on this field regardless of whether
it has a single widget or a MutiWidget.
"""
widget = self.field.widget
id_ = widget.attrs.get('id') or self.auto_id
return widget.id_for_label(id_)
id_for_label = property(_id_for_label)
這意味着你可以用一個「id」鍵將其設置爲任何你想提供您的字段的控件。
foo = forms.CharField(widget=forms.TextInput(attrs={'id': 'foobar'}))
或覆蓋init並在表單初始化後設置attrs。
我不明白這是如何打破形式Django的表單框架是不是永遠知道HTML的id(即數據不傳遞到服務器...)
你能使用脫身類?這肯定是更容易,更不容易出錯(只需修改小部件)。 – sdolan
@sdolan - 我忘了提及這個問題是關於模型的形式。我正在尋找除了更改模型字段名稱之外的解決方案。 – tamakisquare
你不需要。當你構建'ModelForm'時,它只是更新字段的小部件。如果這可行,我會發佈一個完整的解決方案作爲答案。 – sdolan