2012-02-28 15 views
5

Próbuję uzyskać model kategorii, w którym nazwa ma unique=True, , ale praktycznie wciąż mogę dodać tę samą nazwę kategorii w różnych przypadkach.Niewrażliwe na wielkość znaków Charfield w modelach django

tzn mam kategorię o nazwie Food nadal jestem w stanie dodać jedzenie, jedzenie, jedzenie, jedzenie

Czy ich dowolną filozofia za tym stoi? lub jest to praca w toku.

Spowodować w realnym świecie, jeśli myślę o kategorii żywności, to zawsze będzie jedzenie, bez względu na to, jaki przypadek użył, aby wspomnieć o sobie.

Z góry dziękuję, aby na to popatrzeć.

Odpowiedz

14

Aby odpowiedzieć na moje własne pytanie:

Znalazłem mogę mieć czyste metody w moim modelu. Więc dodałem

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

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

jest czerpanie pierwszy list, który następnie jest przetwarzany metodą save, który wywołuje metodę validate_unique podniesienia błąd.

+0

jest to dla mnie bardzo przydatne. dzięki .. :) – suhailvs

+0

2017: Działa bardzo dobrze! – zerohedge

-1

Ustawienie kolumny na wielkość liter powinno to naprawić. Być może będziesz musiał to zrobić na poziomie SQL.

+1

Masz na myśli ustawienie kolumny na "wielkość liter"? Pytanie brzmi, jak to zrobić w Django. – Sarang

Powiązane problemy