Django-forms: ValidationError не работает / проверка существования атрибута

Я пытаюсь получить ошибку для формы, если имя созданного процесса уже существует. Происходит так, что форма просто не отправляется, но не выдает никаких ошибок на саму форму, отмечая, что происходит. Я искал всевозможные способы заставить ValidationError что-то сделать, но не могу заставить его работать вообще. В остальном форма работает, так как она отправляется, если значение еще не существует. Что я упускаю?

Вот models.py

class Process(models.Model):
    name = models.CharField('Process name', max_length=100, unique=True, error_messages={'unique':"Name already in use"})

Вот forms.py

class NewProcess(forms.ModelForm):

    class Meta:
        model = Process
        fields = [
            'name',
        ]

    def __init__(self, *args, **kwargs):
        super(NewProcess, self).__init__(*args, **kwargs)

    def clean_name(self):
        process_name = self.cleaned_data.get('name')

        existing = Process.objects.filter(name=process_name).exists()

        if existing:
            raise forms.ValidationError(u"Name already in use")
        return process_name

Здесь views.py

def process_create(request, *args, **kwargs):

createprocess = NewProcess(request.POST or None)

processes = Process.objects.all()

if request.method == 'POST':
    createprocess = NewProcess(request.POST)
    if createprocess.is_valid():
        process = createprocess.save(commit=False)
        #other functions here
        creatprocess.save()

            context = {
                'processes':processes,
            }

            return render(request, "process/process-list.html", context)

context = {
    'createprocess':createprocess,
}

return render(request, "process/process-create.html", context)

Вы определили метод под названием clean_name, чтобы вызвать ошибку, однако метод проверки, который вы используете в файле views.py, это is_valid(), который не возвращает false для дублирующихся имен.

Вернуться на верх