Как отобразить поле uuid моего сериализатора в виде строки в запросе get с помощью django restframework
Вот мой сериализатор
class AgenceSerializer(serializers.Serializer):
uuid = serializers.UUIDField(format='hex',allow_null=True,required=False) <-------
p1 = serializers.CharField(max_length=50,required=True)
p2 = serializers.CharField(max_length=50,required=True)
views.py
@api_view(["POST"])
def details_agence(request):
if request.method == "POST":
serializer = AgenceUUIDSerializer(data=request.data)
if serializer.is_valid():
agence_repr = serializer.agence_details(data=request.data)
serializer = AgenceSerializer(agence_repr)
print(serializer)
return Response(serializer.data,status=status.HTTP_200_OK) <---------
...
Печать на сериализаторе дает следующее:
AgenceSerializer({'uuid': 'A75DF036-6C16-4311-9825-22B1295D8A26', 'p1': 'Ozangue', ...}):
uuid = UUIDField(allow_null=True, format='hex', required=False)
...
Но когда я отображаю данные, в ответе поле uuid всегда равно null
.
Как решить эту проблему?
У меня была такая же проблема, и это мне помогло.
uuid = serializers.CharField() # Change UUIDField to CharField
просто добавьте это в ваш сериализатор
class AgenceSerializer(serializers.Serializer): uuid = serializers.UUIDField(default=uuid.uuid4, format='hex',allow_null=True,required=False) p1 = serializers.CharField(max_length=50,required=True) p2 = serializers.CharField(max_length=50,required=True)
Обратите внимание на поле uuid.