Using a mixin with a Django form class

后端 未结 4 2041
眼角桃花
眼角桃花 2020-12-29 04:06

I\'m thinking about creating a mixin form class so that I can add a common set of fields to a variety of otherwise very different forms. Just using it as a base class won\'t

4条回答
  •  一向
    一向 (楼主)
    2020-12-29 04:29

    class TextFormMixin(object):
        def __init__(self, *args, **kwargs):
            super(TextFormMixin, self).__init__(*args, **kwargs)
            self.fields['text'] = forms.CharField(widget=forms.Textarea, required=True)
    
        def clean_text(self):
            if not ('{{EMAIL}}' in self.cleaned_data.get('text', '')):
                raise ValidationError("You have to put {{EMAIL}} in message body.")
            return self.cleaned_data.get('text', '')
    
        def get_text(self):
            return self.cleaned_dat['text'].replace('{{EMAIL}}', self.case.get_email())
    
    
    class NewCaseForm(TextFormMixin, forms.ModelForm):
        pass
    class ReplyForm(TextFormMixin, forms.Form):
        to = forms.CharField(max_length=50)
        subject = forms.CharField(max_length=50)
    

提交回复
热议问题