【发布时间】:2022-01-07 14:32:47
【问题描述】:
我正在开发一个新闻模型,我想在其中使用 Django Rest Framework(ModelViewset) 执行喜欢、不喜欢和无视图功能。我已经为它创建了一个模型
模型.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', blank=True)
likes = models.ManyToManyField(User, related_name='Likes', blank=True)
dislikes = models.ManyToManyField(User, related_name='Dislikes', blank=True)
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
序列化器.py
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
views.py
class PostAPI(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
我可以喜欢、不喜欢和查看多个用户。但同时同一用户不喜欢我如何避免这些消息。甚至我如何计算观看次数,喜欢和不喜欢的次数。有什么我遗漏的。请帮助这将是一个很大的支持。非常感谢。
【问题讨论】:
-
当存在一对多关系时需要引入一个新表。
-
你能不能在example.Plzz的帮助下解释一下
标签: django django-models django-rest-framework django-views