2012-02-28 6 views
5

Sto cercando di ottenere un modello di categoria in cui il nome è unique=True, ma praticamente posso ancora aggiungere lo stesso nome di categoria con casi diversi.Case non classificate Charfield in modelli Django

vale a dire che ho una categoria chiamata alimentari io sono ancora in grado di aggiungere il cibo, il cibo, il cibo, il cibo

è il loro ogni filosofia dietro a questo? o è un lavoro in corso.

Causa nel mondo reale se penso alla categoria Cibo, sarà sempre cibo, indipendentemente dal caso in cui abbia usato menzionarlo.

Grazie in anticipo per vedere questo.

risposta

14

Per rispondere alla mia domanda:

ho scoperto che posso avere metodo pulito sul mio modello. Così ho aggiunto

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

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

Si sta capitalizzando la prima lettera, che viene poi gestito dal metodo save, che chiama il metodo validate_unique per aumentare errore.

+0

questo è abbastanza utile per me. grazie .. :) – suhailvs

+0

2017: funziona molto bene! – zerohedge

-1

Impostare la colonna su regole di confronto senza distinzione tra maiuscole e minuscole deve risolvere questo problema. Potrebbe essere necessario farlo a livello SQL.

+1

Si intende l'impostazione della colonna su "case-sensitive"? La domanda è come farlo in Django. – Sarang