【问题标题】:django form creation on init在初始化时创建 django 表单
【发布时间】:2023-03-20 01:59:01
【问题描述】:

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

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.... 行的下方,但我希望它是动态的,具体取决于传入的用户,所以不能这样做。

谢谢

【问题讨论】:

标签: django django-forms


【解决方案1】:

只需要切换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

【讨论】:

  • 你能提供一个我们可以在哪里使用 self.fields 的参考
猜你喜欢
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多