Найти - Пользователи
Полная версия: Form unique field validation
Начало » Django » Form unique field validation
1
rootart
Доброго дня
Хто поділиться ссилкою, де можна прочитати про те, як зробити наступне:
Є форма, яка будується окремо від моделі, але потім в цю модель пишуться з неї дані. В моделі поле email унікальне, відповідно коли пробую дадати обєкт з такми сами заначенням email то видає exeption
IntegrityError at /add/
column email is not unique
Яка є красива реалізація, щоб робити валідацію цього моменту.
дякую
poltergeist
Вы можете после валидации формы проверять наличие в базе записи с таким же мэйлом и если такой уже есть, показывать ошибку пользователю. Примерно так:
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'
PooH
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."))
Не стесняетесь читать исходники джанги, код чистенький, читается легко, узнаете много нового ;)
rootart
PooH
Не стесняетесь читать исходники джанги, код чистенький, читается легко, узнаете много нового ;)
Пасіб за пояснення) Код читаю, просто досвіду ще малувато.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB