2012-02-28 3 views
5

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

т.е. я категорию под названием Food Я до сих пор в состоянии добавить продукты питания, продукты питания, продукты питания, еда

Является ли их какой-либо философии за этим? или это незавершенное производство.

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

Заранее благодарю вас за это.

ответ

14

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

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

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

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

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

+0

это очень полезно для меня. спасибо .. :) – suhailvs

+0

2017: Работает очень хорошо! – zerohedge

-1

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

+1

Вы имеете в виду установку столбца на "чувствительный к регистру"? Вопрос в том, как это сделать в Django. – Sarang