Likes, Dislikes & Views с использованием Django Rest Framework

Я работаю над моделью новостей, в которой я хочу выполнить функции "нравится-не нравится" и "нет просмотров", используя Django Rest Framework (ModelViewset). Я создал для этого модель

Models.py

class Post(models.Model):
    NEWS_TYPE = (('Images','Images'),('Multi-Images','Multi-Images'),('Image-Text','Image-Text'),
                 ('Audio-Video','Audio-Video'),('Audio-Video-Text','Audio-Video-Text'),('Audio','Audio'),
                 ('Audio-Text','Audio-Text'))
    POST_STATUS = (('Pending','Pending'),('Verified','Verified'),('Un-Verified','Un-Verified'),
              ('Published','Published'),('Mint','Mint'))
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    post_type = models.CharField(max_length=100, verbose_name='Post Type', choices=NEWS_TYPE)
    title = models.TextField(verbose_name='News Title')
    content = models.TextField(verbose_name='News Content')
    hash_tags = models.CharField(max_length=255, verbose_name='Hash Tags')
    source = models.CharField(max_length=255, verbose_name='News Source')
    author = models.ForeignKey(User, related_name='Post', on_delete=models.CASCADE)
    views = models.ManyToManyField(User,related_name='Views')
    likes = models.ManyToManyField(User, related_name='Likes')
    dislikes = models.ManyToManyField(User, related_name='Dislikes')
    status = models.CharField(max_length=20, verbose_name='Status', choices=POST_STATUS)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return (self.post_type)+ '-' +self.title

serializers.py

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = '__all__'

views.py

class PostAPI(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

Я перепробовал много способов, но у меня не получается поставить лайк, не поставить лайк или просмотреть сообщение несколькими пользователями. Когда сообщение нравится или не нравится одному пользователю иamp; пытаюсь понравиться или не понравиться другому пользователю, он говорит Like with this post already exist Есть ли что-то, что я упустил. Пожалуйста, помогите, это была бы большая поддержка. Спасибо большое.

Вам понадобится еще один класс, примерно такой, как показано ниже (я не помню точный синтаксис, поэтому, пожалуйста, адаптируйте):

class Likes(models.Model):
    post_id <- make it a foreign key
    user_id <- this is the use performing likes or dislikes
    like <- Possible values are (-1, 0, 1)

   (post_id, user_id) is a unique constraint
Вернуться на верх