Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 12, 2010 17:45:18

fth
От:
Зарегистрирован: 2010-07-26
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка в ModelForm свойства unique_together.

Предположим у нас есть модель и форма для изменения этой модели:

#models.py
class Test(Model):
filed1 = ...
field2 = ...
...

class Meta:
unique_together = ('field1', 'field2')

#forms.py
class TestForm(ModelForm):
class Meta:
model = Test
exclude = ('field2')
Есть ли средства для культурной проверки unique_together в форме? Или же единственный способ это сделать это передавать в __init__ изменяемую модель и писать примерно такой код?
class TestForm(ModelForm):
curr_field1 = ...

class Meta:
model = Test

def __init__(self, test, *args, **kwargs):
super(ModelForm, self).__init__(*args, **kwargs)
self.curr_field1 = test.field1
self.field2 = test.field2

def clean_field1(self):
field1 = self.cleaned_data['field1']
field2 = self['field2'].data
if Test.objects.filter(field1 = field1, field2 = field2):
if field1 <> self.curr_field1:
raise ValidationError(u'field1 and field2 isn't unique!')



Офлайн

#2 Окт. 12, 2010 18:42:41

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Проверка в ModelForm свойства unique_together.

Так для ModelForm unique_together должен сам проверяться. Какую версию Джанги вы используете?



Офлайн

#3 Окт. 12, 2010 23:04:38

fth
От:
Зарегистрирован: 2010-07-26
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка в ModelForm свойства unique_together.

Если не ошибаюсь 1.2.1 (сейчас проверить точно не могу).
В том-то и дело, что не проверяет, при введении не уникальных данных валидация проходит успешно и уже сыпется только при вызове метода save() формы.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version