models.py
class UserContentItem(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
created_date = models.DateTimeField(default=timezone.now)
views.py
class UserContentItemView(APIView):
permission_classes = (permissions.IsAuthenticatedOrReadOnly, )
def post(self, request, format=None):
data = request.data
data['owner'] = request.user.id
serializer = UserContentItemSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializers.py
class UserContentItemSerializer(serializers.ModelSerializer):
class Meta:
model = UserContentItem
fields = ('id', 'owner', 'title', 'created_date')
Я создаю API с помощью Django Rest Framework и простого jwt. Я хочу разрешить аутентифицированным пользователям POST новый UserContentItem
, который зависит от FK от User
, но User
не является частью полезной нагрузки POST. Единственный способ, которым я смог выяснить, как это сделать - это добавить request.user.id
к данным запроса перед его передачей в сериализатор. Есть ли лучший способ сериализации UserContentItem
и достижения той же цели?