Ich habe einige Felder in meinem Benutzermodell, die Auswahlfelder sind, und versuche herauszufinden, wie dies am besten in Django Rest Framework implementiert werden kann.
Unten finden Sie einen vereinfachten Code, der zeigt, was ich tue.
# models.py
class User(AbstractUser):
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
# serializers.py
class UserSerializer(serializers.ModelSerializer):
gender = serializers.CharField(source='get_gender_display')
class Meta:
model = User
# viewsets.py
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
Im Wesentlichen versuche ich, dass die Methoden get / post / put den Anzeigewert des Auswahlfelds anstelle des Codes verwenden und ungefähr so aussehen wie der folgende JSON.
{
'username': 'newtestuser',
'email': 'newuser@email.com',
'first_name': 'first',
'last_name': 'last',
'gender': 'Male'
// instead of 'gender': 'M'
}
Wie würde ich das machen? Der obige Code funktioniert nicht. Bevor ich so etwas für GET hatte, aber für POST / PUT gab es mir Fehler. Ich suche nach allgemeinen Ratschlägen, wie das geht. Es scheint, als wäre es etwas Übliches, aber ich kann keine Beispiele finden. Entweder das oder ich mache etwas schrecklich Falsches.