Django: Добавление уникальных совместных ошибок в одно из задействованных полей

Примечание: я задал этот вопрос на форуме Django, но поскольку я не получил ответа там, я задаю его и здесь.

Я создаю приложение с многопользовательским доступом, то есть все данные связаны с моделью арендатора. При создании моделей я часто хочу проверить уникальность, например, поля name. Однако уникальность требуется только для каждого арендатора, а не глобально, поэтому я использую unique_together (или UniqueConstraint, обнаружил это слишком поздно, но буду переходить).

Однако, когда уникальность нарушается, добавляется non_field_error. Однако я бы предпочел добавить эту ошибку в поле name, поскольку поле арендатора неявно и не видно пользователю (арендатор всегда является арендатором вошедшего в систему пользователя и не может быть выбран).

Подскажите, как этого можно добиться, желательно в модели или, как вариант, в форме? Я думал сначала проверить модель, а потом перенести ошибку из non_field_errors в поле name, но это как-то неправильно.

Отправной точкой будет следующий код:

class Company(models.Model):
    tenant = models.ForeignKey(Tenant, on_delete=models.PROTECT)
    name = models.CharField(max_length=255)

    class Meta:
        unique_together = ('tenant', 'name')
Вернуться на верх