如何使用django和ajax进行星级评定?

时间:2019-02-06 11:20:01

标签: ajax django

我想在博客应用程序中执行星级评定,以获得更好的用户体验...但是无法使用ajax在Django中进行效果...我基本上不想在我的博客项目中使用任何第三方应用程序。 ..我想手动使用django和ajax ...

这是我的博客模型:

class Blog(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
    date = models.DateTimeField(default=datetime.now)
    blog_title = models.CharField(max_length=255,unique=True)
    likes = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='likes',blank=True)
    description = models.TextField()
    blog_image = models.ImageField(upload_to='blog_image', null=True, blank=True)
    category = models.ForeignKey(categories,on_delete=models.CASCADE,related_name='blogs')
    blog_views = models.IntegerField(default=0)

有人知道如何执行此操作吗?

提前谢谢

1 个答案:

答案 0 :(得分:0)

我认为您正在尝试将博客评分为1-5。

如果您要保存博客的每一票,则必须保留其他投票模型,例如:

class BlogStars(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    stars = models.IntegerField(default=0)

对于每一次投票,您都将保存用户,投票的博客以及数量的星星。

在那之后,您要做的就是查询BlogStars:

stars = BlogStars.objects.filter(blog=my_blog).aggregate(Avg('stars'))

使用Ajax保存数据,只是对后端视图进行ajax调用。 无论如何,请以这个tutorial为例,尽管它使用PHP,但可以为您提供一个好主意。