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