Всем привет!
Хочется сделать, чтобы в описании общего апи django rest framework отображался роут без привязки к модели и только с типами запроса POST и GET. Более конкретно: это просто лайк к какому-то объекту. Get покажет количество лайков конкретного объекта, POST - добавит еще один. Проблема (с точки зрения кода) в том, что они у меня хранятся в другой БД и обычный viewset мне там никак не использовать. Конечно, можно просто хардкодом в обход DRF сделать, но тогда он не появится в документации автоматом.
Пока код такой (тут заглушки и бред написаны на самом деле):
# serializers.py
LIKE_CHOICES = ('compliant', 'dislike', 'like', 'superlike')
class LikeSerializer(serializers.Serializer):
receiver = serializers.IntegerField()
like_type = serializers.ChoiceField(choices=LIKE_CHOICES, default='like')
def create(self, validated_data):
print('receiver:', validated_data.get('receiver'))
print('like:', validated_data.get('like_type'))
return None
# views.py
class LikeViewSet(viewsets.ViewSet):
def list(self, request):
'''Это нужно только для конкретного объекта'''
likes=1
return Response({"count": likes})
def create(self, request):
'''Это нужно только для конкретного объекта'''
new_like=LikeSerializer(request.data)
print(new_like)
return Response({"status":"ok"})
# urls.py
router = routers.DefaultRouter()
router.register(r'like/([0-9]+)', api.views.LikeViewSet, base_name='like') # вот эту штуку хочется оставить, чтобы лайки появились в документации
Короче, я пока сильно путаюсь в том, что мне из этого надо оставить, а что убрать. А ещё хочется, чтобы залогиненный юзер автоматически определялся(поэтому в LikeSerializer только receiver без sender-а), так как допустимо ставить лайки только залогиненным юзерам.