2013-05-02 10 views
14

Ho il seguente modello in django.campi opzionali nei modelli django

class Link(models.Model): 
    name = models.CharField(max_length=100) 
    url = models.CharField(max_length=100) 
    tag = models.CharField(max_length=100) 

    def __unicode__(self): 
     return self.name 

Ho bisogno che il campo dell'URL sia facoltativo. Come faccio a fare questo?

risposta

4

Impostazione null=True per CharField non è consigliato, come si può vedere dalla documentazione Django:

Evitare di utilizzare nulla su campi stringa-based come CharField e TextField. Se un campo basato su stringhe ha null = True, significa che ha due possibili valori per "nessun dato": NULL e la stringa vuota. Nella maggior parte dei casi, è ridondante avere due possibili valori per "nessun dato"; la convenzione Django consiste nell'utilizzare la stringa vuota, non NULL. Un'eccezione è quando un CharField ha sia unique = True che blank = True set. In questa situazione, null = True è necessario per evitare violazioni di vincoli univoci quando si salvano più oggetti con valori vuoti.

Quindi mi sento di raccomandare questa configurazione:

name = models.CharField(max_length=100, blank=True, default='')