Дифференцировать уникальную ошибку проверки - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть модель с ограничением unique_together.

class Postit(models.Model):
    """Represents a single post-it."""
    x_axis = models.PositiveIntegerField(_('X axis'))
    y_axis = models.PositiveIntegerField(_('Y axis'))
    content = models.CharField(_('Content'), max_length=140, default='')

    class Meta:
        unique_together = ('x_axis', 'y_axis')

Если я использую форму для создания новой записи, проверяется ограничение, а в случае конфликта ошибка указывается в свойстве non_field_errors. Хорошо.

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

Учитывая, что мое приложение будет переведено на несколько языков, как я узнаю, что форма недействительна из-за ограничений или по другой причине?

1 Ответ

0 голосов
/ 08 декабря 2011

Помните, что вы можете перевести сравниваемую строку, если хотите просто проверить non_field_errors.

from django.utils.translation import ugettext_lazy as _
if _('Some error text') in self._errors['__all__']:
    # do something

Хотя это не самое элегантное решение. Лучше всего просто подтвердить ограничение unique_together в Model.clean или Model.validate_unique и ответить соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...