您可以使用小部件将自定义属性添加到表单元定义中的字段。
class SomeForm(forms.ModelForm):
class Meta:
model = SomeModel
widgets = {'field_name1': forms.Textarea(attrs={'data-bind':'value: field1'}),
'field_name2': forms.TextInput(attrs={'data-bind':'value: field2'})}
例如,第一个字段将被渲染:
<textarea id="id_field_name1" name="field_name1" data-bind="value: field1"></textarea>
更新:
作为奖励,这是一种更改表单中每个字段的属性的简单方法,例如,如果它们都需要特定的类(对其他 js 插件或 css 样式很有帮助)
def __init__(self, *args, **kwargs):
super(SomeForm, self).__init__(*args, **kwargs)
for name, field in self.fields.items():
field.widget.attrs['class'] = 'some_form_field'
# this could be used in your case if the Django field name is the
# same as the KO.js field name
field.widget.attrs['data-bind'] = 'value: %s' % name