Как создать форму редактирования объекта с уникальным полем в Django?
Делаю форму добавления категорий разделов на сайте. Хочу сделать форму редактирования раздела, но так как имя раздела уникальное, при переданном instance для предварительного заполнения формы, form.is_valid() возвращает False и я не могу обработать форму правильно. Подскажите пожалуйста, как мне проверять поле имени в форме на уникальность только при добавлении раздела, а при редактировании нет? Форма:
class EditSectionForm(forms.ModelForm):
class Meta:
model = Section
fields = ['name', 'description']
def __init__(self, *args, **kwargs):
super(EditSectionForm, self).__init__(*args, **kwargs)
self.fields['name'].widget = forms.TextInput(attrs={'class': 'form-control', 'id': 'edit_name_field'})
self.fields['description'].widget = forms.Textarea(attrs={'class': 'form-control'})
self.fields['name'].required = False
self.fields['description'].required = False
Обработка формы:
def EditSectionView(request, objId):
if request.method == 'POST':
form = EditSectionForm(request.POST)
if form.is_valid():
try:
obj = Section.objects.get(id=objId)
if form.cleaned_data['name']:
obj.name = form.cleaned_data['name']
if form.cleaned_data['description']:
obj.description = form.cleaned_data['description']
obj.save()
return HttpResponseRedirect('/ref/sections')
except Section.DoesNotExist:
return HttpResponseNotFound('Not exist')
else:
return render(request, 'sections.html', {
'form': form,
'objId': objId
})
if request.method == 'GET':
form = EditSectionForm(instance=Section.objects.get(id=objId))
return render(request, 'sections.html', {
'form': form,
'objId': objId
})
Ценна любая помощь. Спасибо!