Уведомления

Группа в Telegram: @pythonsu

#1 Июль 3, 2009 00:22:31

rootart
От:
Зарегистрирован: 2009-02-18
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Form unique field validation

Доброго дня
Хто поділиться ссилкою, де можна прочитати про те, як зробити наступне:
Є форма, яка будується окремо від моделі, але потім в цю модель пишуться з неї дані. В моделі поле email унікальне, відповідно коли пробую дадати обєкт з такми сами заначенням email то видає exeption
IntegrityError at /add/
column email is not unique
Яка є красива реалізація, щоб робити валідацію цього моменту.
дякую



Офлайн

#2 Июль 3, 2009 00:56:17

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Form unique field validation

Вы можете после валидации формы проверять наличие в базе записи с таким же мэйлом и если такой уже есть, показывать ошибку пользователю. Примерно так:

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)

Офлайн

#3 Июль 3, 2009 06:05:22

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Form unique field validation

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."))
Не стесняетесь читать исходники джанги, код чистенький, читается легко, узнаете много нового ;)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#4 Июль 3, 2009 06:08:51

rootart
От:
Зарегистрирован: 2009-02-18
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Form unique field validation

PooH
Не стесняетесь читать исходники джанги, код чистенький, читается легко, узнаете много нового ;)
Пасіб за пояснення) Код читаю, просто досвіду ще малувато.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version