在 init 上创建 django 表单

2024-04-14

如何在表单初始化函数中添加字段?例如在下面的代码中我想添加一个配置文件字段。

class StaffForm(forms.ModelForm):
    def __init__(self, user, *args, **kwargs):
        if user.pk == 1:
            self.fields['profile'] = forms.CharField(max_length=200)

        super(StaffForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Staff

我知道我可以将它添加到类 StaffForm.... 行的下方,但我希望它是动态的,具体取决于传入的用户,所以不能这样做。

Thanks


只需要切换 init 函数,以便在添加更多字段之前调用 super 。

class StaffForm(forms.ModelForm):
    def __init__(self, user, *args, **kwargs):
        super(StaffForm, self).__init__(*args, **kwargs)

        if user.pk == 1:
            self.fields['profile'] = forms.CharField(max_length=200)
            self.fields['profile'].initial = 'whatever you want'
    class Meta:
        model = Staff
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 init 上创建 django 表单 的相关文章

随机推荐