Допустим, у меня есть форма Django с ChoiceField:
class MyForm(forms.Form):
name = forms.CharField(label="Name", required=True)
some_object = forms.ChoiceField(label="Object", choices=[(0, '-----')] + [(x.id, x.name) for x in Obj.objects.all()])
Поле Choise инициализируется списком объектов, возглавляемых «пустым выбором».Там нет объекта с pk = 0.В этой форме у меня есть метод clean ():
def clean(self):
if not Obj.objects.filter(self.cleaned.data['some_object'].exists():
self.errors.update({'some_object': ['Invalid choice']})
Он хорошо работает, когда я отправляю форму на сервер, если данные в ней не соответствуют условиям, field.is_valid возвращает False иЯ отрисовываю форму с сообщениями об ошибках.Но когда я создаю пустую форму, подобную этой:
if request.method == 'GET':
data = {'name': 'Untitled',
'some_object': 0}
form = MyForm(data)
return render(request, 'app\template.html', {'form': form})
Django отображает форму с сообщением об ошибке («Неверный выбор»), даже если форма была только что создана, а «Выбор объекта» предназначался для установки в пустойпозиция.Можно ли отключить метод clean () в определенных случаях?Или, может, я все делаю неправильно?Как лучше всего создавать пустую форму?