Django rest framework Like Function

в django я хочу написать функцию, которая удаляет лайки, если текущему пользователю уже нравился этот пост, и если да, то как я могу это сделать.

Это мой models.py

class Like(models.Model):
    created_by = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
  

    def __str__(self):
        return self.created_by.username

Это мой serializers.py

class LikeSerializer(serializers.ModelSerializer):
    created_by = serializers.StringRelatedField()
    post = serializers.StringRelatedField()
    post_id = serializers.IntegerField()
  

    class Meta:
        model = Like
        fields = ('__all__')

Это мой views.py

    class LikesView(viewsets.ModelViewSet):
        queryset = Like.objects.all()
        serializer_class = LikeSerializer
        
        def perform_create(self, serializer):
            serializer.save(created_by=self.request.user)

Это мой urls.py

from django.urls import path,include

from .views import (
    PostView,
    PostView_View,
    LikesView,
    CommentView
)
from rest_framework import routers

router = routers.DefaultRouter()
router.register('likes', LikesView)
router.register('post', PostView)
router.register('comment', CommentView)

urlpatterns = [

] + router.urls

Для этого действия можно переопределить метод сохранения сериализатора. Сначала получите объект из таблицы, и если он существует, удалите его

https://www.django-rest-framework.org/api-guide/serializers/

Вернуться на верх