2011-01-05 16 views
41

ho bisogno di avere la mia applicazione Django mi permette di avere un valore predefinito impostato NULL per un determinato campo modello. Ho dato un'occhiata al numero, vuoto , e , e , e , ma non è molto chiaro quale combinazione dei tre ho bisogno di usare per ottenere l'effetto desiderato. Ho provato a impostare default=NULL ma ha generato un errore. Se si specifica blank=True, null=True e nessun valore predefinito, verrà ripristinato il valore NULL come runtime?Django modello di campo predefinito per Null

risposta

67

Prova default=None. Non v'è alcun NULL in pitone.

+0

Che ha fatto il trucco, grazie. :) – SPoage

+2

Solo per chiarezza, il NULL a cui si riferisce è per il campo del modello Django. Ciò consente/non consente di utilizzare un valore None per quel valore, che viene archiviato come NULL nel database, non in Python. Vuoto indica se il valore è richiesto o meno per la convalida nei moduli/admin/ecc. – Nexion

+0

@Nexion, 'default = None' non consente o non consente di utilizzare un valore None. Semplicemente dice a Django quale dovrebbe essere il valore del campo se non è specificato. 'null = True' consente a None di essere utilizzato nel codice Python. È trattato come NULL nel database. E hai ragione sul fatto che il bianco venga utilizzato per la convalida del modulo. – Bobort

22

Se si specifica nulla = True sul campo Modello allora il valore sarà memorizzato come NULL nel database se l'utente non fornisce un valore.

+2

Questo non è vero nella maggior parte dei casi, perché di solito memorizza una stringa vuota. – hY8vVpf3tyR57Xib

+0

@AlfonsIngomar Errato, dai documenti - https://docs.djangoproject.com/en/1.8/ref/models/fields/#null "Se True, Django memorizzerà i valori vuoti come NULL nel database. false ". – Kevin

+4

Guarda il paragrafo successivo: Evita di usare null su campi basati su stringhe come CharField e TextField ** perché i valori di stringa vuoti verranno sempre memorizzati come stringhe vuote, non come NULL **. 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. – hY8vVpf3tyR57Xib

Problemi correlati