Форум сайта python.su
Доброго дня
Хто поділиться ссилкою, де можна прочитати про те, як зробити наступне:
Є форма, яка будується окремо від моделі, але потім в цю модель пишуться з неї дані. В моделі поле email унікальне, відповідно коли пробую дадати обєкт з такми сами заначенням email то видає exeption
IntegrityError at /add/
column email is not unique
Яка є красива реалізація, щоб робити валідацію цього моменту.
дякую
Офлайн
Вы можете после валидации формы проверять наличие в базе записи с таким же мэйлом и если такой уже есть, показывать ошибку пользователю. Примерно так:
try:
Entity.objects.get(email=form_data['email'])
except Entity.ObjectDoesNotExists:
Entity.objects.create(**form_data)
else:
error = 'User with this e-mail is already exists'
Отредактировано (Июль 3, 2009 08:03:57)
Офлайн
poltergeistТолько не после валидации формы, а именно во время валидации в методе clean_email:
Вы можете после валидации формы проверять наличие в базе записи с таким же мэйлом и если такой уже есть, показывать ошибку пользователю.
def clean_email(self):
email = self.cleaned_data["email"]
try:
User.objects.get(email=email)
except User.DoesNotExist:
return email
raise forms.ValidationError(_("User with this e-mail is already exists."))
Офлайн
PooHПасіб за пояснення) Код читаю, просто досвіду ще малувато.
Не стесняетесь читать исходники джанги, код чистенький, читается легко, узнаете много нового ;)
Офлайн