1
- from rest_framework import viewsets
1
+ from http import HTTPMethod
2
+
3
+ from django .shortcuts import get_object_or_404
4
+ from rest_framework import response , status , viewsets
5
+ from rest_framework .decorators import action
6
+
7
+ from apps .comment .api .v1 .serializers import CommentSerializer
2
8
3
9
from ...models import QuibModel
4
10
from .serializers import QuibSerializer , QuibSlimSerializer
@@ -10,4 +16,19 @@ class QuibViewSet(viewsets.ModelViewSet):
10
16
def get_serializer_class (self ): # pyright: ignore
11
17
if self .action == 'list' :
12
18
return QuibSlimSerializer
19
+ # if custom action: 'comment'
20
+ if self .action == 'comment' :
21
+ return CommentSerializer
13
22
return QuibSerializer
23
+
24
+ @action (detail = True , methods = [HTTPMethod .POST ])
25
+ def comment (self , request , pk = None ):
26
+ quib_instance = get_object_or_404 (QuibModel , pk = pk )
27
+
28
+ serializer = CommentSerializer (data = request .data )
29
+ serializer .is_valid (raise_exception = True )
30
+
31
+ comment_instance = serializer .save ()
32
+ quib_instance .comments .add (comment_instance )
33
+
34
+ return response .Response (status = status .HTTP_201_CREATED , data = serializer .data )
0 commit comments