Django在呈现另一个控件时获取小部件的html id

2024-05-01 03:46:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在做一些项目,这些项目要求我在呈现另一个widget时知道Django小部件的htmlid,但是到目前为止,我还没有找到一种合理的方法来实现这一点。以下是许多用例:

假设字段A和字段B都是相同的django形式。 现在假设字段A接受用户名,字段B是一个自动完成文本字段,它接受字段A的值并使用所述值进行ajax调用。自动完成的逻辑是在fieldb的widget的render方法中,但是我不能从fieldb的widget访问fielda的widget,我需要访问来获取fielda的widget html id并使用jquery(如so $("#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,但感觉有点老套。 所以我的问题是,有没有更好的方法?在

欢迎任何反馈。谢谢。在


Tags: 项目方法selfidfieldinitargsforms