różnych wariantów postępowania z pustymi, pustych i zerowych pól są (koniecznie) trochę subtelna, więc jej dziwić, że ludzie się czasem wycieczki.
wiem jak na dokumentacji następujące pola nie biorą allow_blank = True i allow_null = True
To błędne:
IntegerField(allow_null=True)
jest prawidłowy.
- Jeśli chcesz zezwolić na wartości zerowe dla pól boolowskich, musisz użyć klasy
NullBooleanField()
.
Masz rację, że żaden z nich nie przyjmuje wartości allow_blank
, ponieważ pusty ciąg nie będzie prawidłową wartością w obu przypadkach.
potrzebne w celu umożliwienia klientowi nie określa g albo D (jak na niżej) oraz do przechowywania wartość w dB, jak Żaden.
Można użyćIntegerField(default=None)
i NullBooleanField(default=None)
.
W takim przypadku, gdy wartości zostaną pominięte, zostaną one podane jako None
w serializer.validated_data
. Upewnij się, że używasz null=True
/NullBooleanField
w polu modelu.
LubIntegerField(required=False)
i NullBooleanField(required=False)
.
W takim przypadku, gdy wartości zostaną pominięte, nie będą one zawarte w serializer.validated_data
, a użyte zostanie domyślne pole modelu. Upewnij się, że używasz default=None
i null=True
/NullBooleanField
w polu modelu.
Należy zauważyć, że nastąpił błąd podczas korzystania z interfejsu API do przeglądania że puste pola w wejściu HTML did not get the default values set. Zostało to rozwiązane w the upcoming 3.1.4 release.
Argument przedstawiony w odpowiedzi Edwina może być przydatny, ale służy do ustawiania wartości początkowo renderowanej w polach formularza HTML.
Czy są jakieś informacje na temat którejkolwiek z odpowiedzi? –