Ошибка __init__ при создании формы. Что делать?

При создании формы у меня получается так, что я нарушаю правило DRY. Я не понимаю как мне сделать миксин для метода clean_email.
Даже если просто нарушаю это правило и пытаюсь вызвать такой же метод, у меня выходит ошибка: TypeError: __init__() got an unexpected keyword argument 'unique' Не подскажите как сделать миксин или избавиться от этой ошибки?

forms.py

from django import forms
from phonenumber_field.modelfields import PhoneNumberField
from django.db import models
from django.core.exceptions import ValidationError
from snowpenguin.django.recaptcha3.fields import ReCaptchaField


from .models import Review


class ReviewForm(forms.ModelForm):
    captcha = ReCaptchaField()

    class Meta:
        model = Review
        fields = ['text', 'name', 'email', 'captcha']

        widgets = {
            'text': forms.TextInput(attrs={'class': 'form__review', 'type': 'text', 'placeholder': 'Напишите отзыв'}),
            'name': forms.TextInput(attrs={'class': 'review-form__item', 'type': 'text', 'placeholder': 'Имя'}),
            'email': forms.TextInput(attrs={'class': 'review-form__item', 'type': 'text', 'placeholder': 'email'}),
        }

    def clean_email(self):
        new_email = self.cleaned_data['email']
        if Review.objects.filter(email=new_email).exists():
            raise ValidationError('You cannot reuse the same email')
        return new_email


class Room_Reservation(forms.Form):
    name = forms.CharField(max_length=200, widget=forms.TextInput(attrs={'placeholder': 'Имя'}))
    last_name = forms.CharField(max_length=200, widget=forms.TextInput(attrs={'placeholder': 'Фамилия'}))
    email = forms.EmailField(unique=True, widget=forms.TextInput(attrs={'placeholder': 'email'}))
    phone = PhoneNumberField(null=False, blank=False, unique=True, widget=forms.TextInput(attrs={'placeholder': 'Номер Телефона'}))


    def clean_email(self):
        new_email = self.cleaned_data['email']
        if Review.objects.filter(email=new_email).exists():
            raise ValidationError('You cannot reuse the same email')
        return new_email
  • Вопрос задан
  • 272 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы