Django REST API: Неверные данные. Ожидали словарь, а получили User

Я хочу разработать REST API, в котором пользователь может отправить новую запись об автомобиле с помощью запроса POST. Пользователь автоматически должен быть установлен как создатель. Под models.py у меня есть:

class CarRecord(models.Model):
    type = models.CharField(max_length=50)
    license = models.CharField(max_length=50)
    creator = models.ForeignKey(User,on_delete=models.DO_NOTHING)

Под моим serializers.py я имею:

class UserSerializer(serializers.ModelSerializer):
    username = serializers.CharField(max_length=50)

    class Meta:
        model = User
        fields = ['username']

class CarRecordSerializer(serializers.ModelSerializer):
    type = serializers.CharField(max_length=50)
    license = serializers.CharField(max_length=50)
    creator = UserSerializer()

    class Meta:
        model = CarRecord
        fields = ('__all__')

В методе post у меня есть:

class CarRecordViews(APIView):

    def post(self, request):
        user = request.user
        if not user.is_authenticated:
            user = authenticate(username=request.data['username'], password=request.data['password'])
            if user is None:
                return Response(data={"error": "bad username/password"}, status=status.HTTP_401_UNAUTHORIZED)

        data = { 'type': request.data['type'], 'license': request.data['license'], 'creator': user }
        serializer = CarRecordSerializer(data=data)
        serializer.is_valid(raise_exception=True)

        return Response({"message": "success"}, status=status.HTTP_201_CREATED)

Но я получаю:

{
    "creator": {
        "non_field_errors": [
            "Invalid data. Expected a dictionary, but got User."
        ]
    }
}

Я хочу сохранить пользователя в качестве создателя. Я не уверен, что полностью понимаю, как работают сериализаторы, но я полагаю, что проблема в этом файле. Как я могу заставить его работать?

Вернуться на верх