使用预先存在的数据重写表单构造函数将使表单不可编辑

2024-09-30 18:29:57 发布

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

如果用户的配置文件存在,我想用现有数据覆盖我创建的表单,以便用户可以编辑他们可能已经提交的数据。我的代码覆盖表单的init方法,但是当呈现表单时,表单包含文本,但它不可编辑。我需要它是可编辑的

表单代码如下所示:

class ProfileForm(forms.Form):
    aboutme = forms.CharField( widget=forms.Textarea )
    aboutmeprivate = forms.BooleanField(required=False)
    interestsprivate = forms.BooleanField(required=False)

def __init__(self, *args, **kwargs):
    super(ProfileForm, self)
    self.aboutme = kwargs.pop('aboutme')
    self.aboutmeprivate = kwargs.pop('aboutmeprivate')
    self.interestsprivate = kwargs.pop('interestsprivate')

这个电话看起来像:

form = ProfileForm(aboutme=exisitingprofile.aboutme, aboutmeprivate=exisitingprofile.aboutmeprivate, interestsprivate=exisitingprofile.interestsprivate)

有人能提供建议吗


Tags: 数据代码用户self编辑表单initforms
2条回答

你需要这样给予,super应该在self.your_字段后面,而且你缺少了那里的u init

class ProfileForm(forms.Form):
    aboutme = forms.CharField( widget=forms.Textarea )
    aboutmeprivate = forms.BooleanField(required=False)
    interestsprivate = forms.BooleanField(required=False)

    def __init__(self, *args, **kwargs):
        self.aboutme = kwargs.pop('aboutme')
        self.aboutmeprivate = kwargs.pop('aboutmeprivate')
        self.interestsprivate = kwargs.pop('interestsprivate')
        super(ProfileForm, self).__init__(*args, **kwargs)

“不可编辑”是指该字段不可单击

解决方案是从视图中修改对表单的调用,如下所示:

            form = ProfileForm(initial={'aboutme': exisitingprofile.aboutme,
                                    'aboutmeprivate' : exisitingprofile.aboutmeprivate,
                                    'interestsprivate' : exisitingprofile.interestsprivate })

我不需要重写构造函数

相关问题 更多 >