重写clean(),data not accessib

2024-03-28 09:44:42 发布

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

我想扩展现有表单,以便在提交时发送电子邮件:

class BaseForm(forms.Form):

    field = forms.CharField()

    def clean(self):
        "do stuff"
        return self.cleaned_data

class MyForm(BaseForm):

    def clean_field(self):
        "do some validation"
        return self.cleaned_data['field']

class MyEmailingForm(MyForm):
    def clean(self):
        super(MyEmailingForm, self).clean()
        send_mail('Form data',
          self.cleaned_data['field'],
          'Form <noreply@myform.co.uk>',
          ["formdata@myform.co.uk"],
          fail_silently=True)

问题是self.cleaned_data['field']不能从超类访问,我得到一个KeyError。我需要做什么?你知道吗

编辑

我想我把事情简单化了。代码已经更新了,我想问题可能是双重子类。你知道吗


Tags: selfformcleanfielddatareturndefforms
3条回答

我相信归还自清理的\u数据只对基类有效。你知道吗

class MyForm(forms.Form):
    field = forms.CharField()

    def clean(self):
        "do stuff"
        return self.cleaned_data

    class MyEmailingForm(MyForm):
        def clean(self):
            super(MyEmailingForm, self).clean()
            send_mail('Form data',
              self.cleaned_data['field'],
              'Form <noreply@myform.co.uk>',
              ["formdata@myform.co.uk"],
              fail_silently=True)
              return self.cleaned_data

您需要从基方法和子类方法返回self.cleaned_data。你知道吗

必须首先使用is_valid()方法。你知道吗

https://docs.djangoproject.com/en/dev/topics/forms/

相关问题 更多 >