Расширьте встроенную регистрационную форму, добавив поле DOB и метод clean_, чтобы проверить, что это раньше определенного времени. Что-то вроде:
from datetime import datetime
from registration.forms import RegistrationForm
class DOBRegistrationForm(RegistrationForm):
date_of_birth = forms.DateField()
def clean_date_of_birth(self):
dob = self.cleaned_data['date_of_birth']
age = (datetime.now() - dob).days/365
if age < 18:
raise forms.ValidationError('Must be at least 18 years old to register')
return dob
В своих представлениях вы используете DOBRegistrationForm
так же, как и обычные RegistrationForm
. Если вы используете registration.views.register
, просто передайте класс в качестве параметра form_class
.
Таким образом они получат ошибку формы, если их DOB не находится в допустимом диапазоне без создания каких-либо строк в базе данных.