所以我正在制作一个网站。 我发了帖子和用户模型。 我希望每个用户都为每个帖子投票。(向上或向下)
我想我需要一个新模型。我怎么做一个? 它应该为每个用户和帖子保存投票。 我想要一个post.ranking,这是所有上下的总和。
发布
model.py
class Post(models.Model):
...
ranking = models.IntegerField(default = 0)
用户
model.py
class UserZ(authmodels.User, authmodels.PermissionsMixin):
status = models.CharField(max_length=100, blank=True)
avatar = models.ImageField(upload_to='images/avatar', null=True, blank=True, default='/static/img/Weramemesicon.png')
def __str__(self):
return self.username
答案 0 :(得分:3)
我建议你不要重新发明轮子。您可以使用django-vote
app
通过点击
安装django-vote
pip install django-vote
将'vote'
添加到您的INSTALLED_APPS
设置
INSTALLED_APPS = (
...
'vote',
)
将VoteModel
添加到您要投票的模型
from vote.models import VoteModel
class ArticleReview(VoteModel, models.Model):
...
运行迁移
manage.py makemigrations
manage.py migrate
使用投票API
review = ArticleReview.objects.get(pk=1)
# Up vote to the object
review.votes.up(user_id)
# Down vote to the object
review.votes.down(user_id)
# Removes a vote from the object
review.votes.delete(user_id)
# Check if the user already voted the object
review.votes.exists(user_id)
# Returns the number of votes for the object
review.votes.count()
# Returns a list of users who voted and their voting date
review.votes.user_ids()
# Returns all instances voted by user
Review.votes.all(user_id)