Le varie opzioni per la gestione di campi vuoti, vuoti e nulli sono (necessariamente) un po 'sottili, quindi è sorprendente che talvolta viaggi gente up.
So come per la documentazione i seguenti campi non tengono allow_blank = True e allow_null = True
Questo è errato:
IntegerField(allow_null=True)
è valido.
- Se si desidera consentire input nulli per campi booleani, è necessario utilizzare la classe
NullBooleanField()
.
Si è corretto che nessuno di loro prende allow_blank
, in quanto la stringa vuota non sarà un valore valido in entrambi i casi.
ho bisogno di consentire al cliente di non specifica G o D (come da sotto) e per memorizzare il valore nel DB come Nessuno.
È possibile utilizzareIntegerField(default=None)
e NullBooleanField(default=None)
.
In questo caso, quando i valori vengono omessi, verranno inclusi come None
in serializer.validated_data
. Dovrai assicurarti di utilizzare null=True
/NullBooleanField
nel campo Modello.
oppureIntegerField(required=False)
e NullBooleanField(required=False)
.
In questo caso, quando i valori vengono omessi, non saranno inclusi in serializer.validated_data
e verrà utilizzato il campo del modello predefinito. Dovrai assicurarti di utilizzare default=None
e null=True
/NullBooleanField
nel campo Modello.
Nota che c'era un bug quando si utilizza l'API sfogliabile che i campi vuoti in input HTML did not get the default values set. Questo problema è risolto in the upcoming 3.1.4 release.
L'argomento initial
suggerito nella risposta di Edwin può anche essere utile, ma è utile per impostare un valore da rendere inizialmente nei campi modulo HTML.
fonte
2015-07-16 11:26:00
C'è qualche altra informazione che desideri in una delle risposte? –