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."
]
}
}
Я хочу сохранить пользователя в качестве создателя. Я не уверен, что полностью понимаю, как работают сериализаторы, но я полагаю, что проблема в этом файле. Как я могу заставить его работать?