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/