Чарфилд без учета регистра в моделях Django - PullRequest
9 голосов
/ 28 февраля 2012

Я пытаюсь получить модель категории, в которой имя имеет unique=True, но практически я все еще могу добавить одно и то же имя категории с разными случаями.

т.е. у меня есть категория под названием Еда, которую я все еще могу добавитьеда, еда, еда, еда

Есть ли в этом какая-то философия?или это работа в процессе.

Потому что в реальном мире, если я вспоминаю о категории «Еда», это всегда будет еда, независимо от того, в каком случае она упоминала себя.

Спасибозаранее посмотреть на это.

Ответы [ 2 ]

16 голосов
/ 29 февраля 2012

Чтобы ответить на мой вопрос:

Я обнаружил, что у меня может быть чистый метод на моей модели. Поэтому я добавил

class Category(models.Model):
    name = models.CharField(max_length=200, unique=True)

    def clean(self):
        self.name = self.name.capitalize()

Это заглавная буква первой буквы, которая затем обрабатывается методом save, который вызывает метод validate_unique, чтобы вызвать ошибку.

0 голосов
/ 28 февраля 2012

Установка столбца для сортировки без учета регистра должна исправить это.Возможно, вам придется сделать это на уровне SQL.

...