Я хотел бы настроить форму регистрации пользователя в Django/Мезонин разрешить только определенные адреса электронной почты, поэтому я попытался обезьяньего пластыря следующим образом:Добавление проверки в Django формы User
# Monkey-patch Mezzanine's user email address check to allow only
# email addresses at @example.com.
from django.forms import ValidationError
from django.utils.translation import ugettext
from mezzanine.accounts.forms import ProfileForm
from copy import deepcopy
original_clean_email = deepcopy(ProfileForm.clean_email)
def clean_email(self):
email = self.cleaned_data.get("email")
if not email.endswith('@example.com'):
raise ValidationError(
ugettext("Please enter a valid example.com email address"))
return original_clean_email(self)
ProfileForm.clean_email = clean_email
Этот код добавляется вверху одного из моих models.py
.
Однако, когда я runserver я получаю страшный
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
Если добавить
import django
django.setup()
тогда python manage.py runserver
просто зависает, пока я ^C
.
Что я должен делать, чтобы добавить эту функцию?
Из интереса, почему вы считаете, что добавление 'django.setup()' было возможным исправлением? Это означает, что когда вы используете Django в автономных сценариях, вы никогда не должны использовать его в своем 'models.py'. – Alasdair
Я знаю это сейчас! Я использовал его в автономных скриптах, чтобы настроить нужные мне модели и не понимал, что он не будет работать в рамках реального проекта Django. – xnx