Models.UniqueConstraint не вызывает ошибку при отправке формы

Мне интересно, почему я не получаю ошибку при отправке формы, в которой я добавил UniqueConstraint на два поля вместе; данные не отправляются в базу данных (что ожидается из-за ограничения, которое я добавил в модель), и все, что происходит, это возвращение той же формы. Мне нужна какая-то индикация под полем Key Name, чтобы сказать что-то вроде "Key Name уже существует". Вот мой код:

В models.py

    class Meta:
    verbose_name = "Key Definition"
    constraints = [
        models.UniqueConstraint(fields=['key_name', 'developer_email'], name='unique key names for each user')
    ]

В forms.py

class KeyDefinitionForm (BSModalModelForm) :

       ## code I have not included goes here ##    

        def save(self):
        log.debug("ENTER: forms.KeyDefinitionForm.save")
        if self.request:
            instance = super(CreateUpdateAjaxMixin, self).save()
        log.debug("EXIT: forms.KeyDefinitionForm.save")
        return instance

В views.py

class KeyDefinitionView (BSModalCreateView) :

"""Class based view for key definition loading form."""
model = KeyDefinition
form_class = KeyDefinitionForm
template_name = 'generate_keys/keydef_add_modal.html'
body_template_name = 'generate_keys/keydef_add_body.html'

def get(self, request):
    log.debug("ENTER: views.KeyDefinitionView.get()")
    form = self.form_class(
        initial = {
            'developer_email' : request.user.email,
            'issue_date' : datetime.date.today(),
            'HGE_TLS' : 'N',
        }
    )
    data = {
        'form' : form,
    }
    result = render(request, self.template_name, data)
    log.debug("EXIT: views.KeyDefinitionView.get()")
    return result

def post(self, request, *args, **kwargs) :
    log.debug("ENTER: views.KeyDefinitionView.post()")
    result = super().post(request, args, kwargs)

    print(result)

    log.debug("EXIT: views.KeyDefinitionView.post()")
    return result

Вам нужно добавить следующий код либо в ваш базовый шаблон (если вы расширяете базовый шаблон для шаблона с вашей формой), либо в шаблон вашей формы. Этот код покажет вам любые сообщения о валидации, которые общее представление Django отправило при рендеринге шаблона.

Вам нужно добавить этот код поверх другого содержимого в вашем шаблоне, чтобы он отображал сообщения поверх содержимого вашей страницы. Этот тег будет загружаться только тогда, когда есть сообщение, переданное на front-end с HTTP-запросом

.

Template.py

{% for message in messages %}
   <div class="alert {{ message.tags }} alert-dismissible" role="alert">
       <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
       </button>
       {{ message }}
   </div>
{% endfor %}

Также добавьте этот код в свою форму для получения ошибок формы, которые не связаны ни с одним полем формы.

Template.py (шаблон формы)

<form method='post'>
   {% csrf_token %}
   {{ form.non_field_errors }}
   .
   .
</form>
Вернуться на верх