Найти - Пользователи
Полная версия: Проверка в ModelForm свойства unique_together.
Начало » Django » Проверка в ModelForm свойства unique_together.
1
fth
Предположим у нас есть модель и форма для изменения этой модели:
#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!')
Александр Кошелев
Так для ModelForm unique_together должен сам проверяться. Какую версию Джанги вы используете?
fth
Если не ошибаюсь 1.2.1 (сейчас проверить точно не могу).
В том-то и дело, что не проверяет, при введении не уникальных данных валидация проходит успешно и уже сыпется только при вызове метода save() формы.
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