我一直在从事一些项目,这些项目需要我在渲染另一个小部件时知道 Django 小部件的 html id,但到目前为止,我还没有找到理智的方法。以下是许多用例:
假设我们有相同的 django 形式的字段 A 和字段 B。现在说字段 A 采用用户名,字段 B 是一个自动完成文本字段,它采用字段 A 的值并使用所述值进行 ajax 调用。自动完成的逻辑将在字段 B 的小部件的 render 方法中,但我无法从字段 B 的小部件访问字段 A 的小部件,我需要访问权限才能获取字段 A 的小部件 html id 并使用 jquery 将其作为目标$("#field_a_id").val()
。到目前为止,我发现这样做的唯一方法是以下
class DjangoForm(forms.ModelForm):
field_a = forms.CharField()
field_b = forms.CharField()
class Meta:
model = SomeModel
def __init__(self, *args, **kwargs):
super(DjangoForm, self).__init__(*args, **kwargs)
# HACK !!!
field_a_id = self['field_a'].id_for_label
self.fields['field_b'].widget.attrs.update({'field_a_id': field_a_id})
通过这样做,我可以使用 jQuery 轻松获取 id,但感觉有点 hackish。所以我的问题是,有没有更好的方法来做到这一点?
任何反馈表示赞赏。谢谢。