我想在博客应用程序中执行星级评定,以获得更好的用户体验...但是无法使用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)
有人知道如何执行此操作吗?
提前谢谢
答案 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,但可以为您提供一个好主意。