Предположим у нас есть модель и форма для изменения этой модели:
#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!')