Django post api вызов автозаполнения request.user в поле user
serializer.save(user=request.user.profile, post=post) не работает. работает в другом представлении. Я понятия не имею, почему он не работает. Не могли бы вы мне помочь. Спасибо
//Это работает
class CurrentUserPostList(generics.ListAPIView):
serializer_class = PostSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
search_fields = ['title', 'content']
filter_backends = (filters.SearchFilter,)
def get_queryset(self):
user = self.request.user
return Post.objects.filter(user=user.profile)
def post(self, request, *args, **kwargs):
serializer = PostSerializer(data=request.data)
if serializer.is_valid():
serializer.save(user=request.user.profile)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
// Это не работает
class CommentList(generics.ListAPIView):
serializer_class = CommentSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
def get_queryset(self):
return Post.objects.get(id=self.kwargs.get('pk')).comments.all()
def post(self, request, pk, format=None):
post = get_object_or_404(Post, pk=pk)
serializer = CommentSerializer(data=request.data)
if serializer.is_valid():
serializer.save(user=request.user.profile, post=post)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
// models.py
class Comment(models.Model):
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
user = models.ForeignKey(Profile, on_delete=models.CASCADE)
post = models.ForeignKey(Post, related_name='comments', on_delete=models.CASCADE)
content = models.TextField(null=True, blank=True)
last_modified = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.author)