我正在使用星星创建一个评级系统。
这是我的地方模型:
class Place(models.Model):
name = models.CharField(max_length=80)
floor = models.IntegerField(null=True)
unit = models.CharField(null=True, blank=True, max_length=5)
address = models.CharField(null=True, blank=True, max_length=120)
desc = models.TextField(null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
这是我的评分模型:
class Rating(models.Model):
user = models.ForeignKey(User)
place = models.ForeignKey(Place)
STAR_CONVERSION = (
(1, 'One'),
(2, 'Two'),
(3, 'Three'),
(4, 'Four'),
(5, 'Five'),
)
air_flow = models.PositiveSmallIntegerField(choices=STAR_CONVERSION)``
Run Code Online (Sandbox Code Playgroud)
我想获得每个地方每个评分字段的平均评分。
例如,地点 X 的 air_flow 平均值。
在我的 views.py 中,我尝试为一个独特的地方汇总 air_flow 的平均值:
class PlaceViewSet(viewsets.ModelViewSet):
queryset = Place.objects.all()
serializer_class = PlaceSerializer
air_flow_average = Rating.objects.filter(Place='id').aggregate(Avg('air_flow'))
Run Code Online (Sandbox Code Playgroud) 我要在网页上添加评论部分,并希望用户能够对评论进行增票或减票。
我的模型是这样的:
class Comment(models.Model):
owner = models.ForeignKey(User)
body = models.TextField(null=True, blank=True, max_length=500)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Vote(models.Model):
comment = models.ForeignKey(Comment)
upvote = models.SmallIntegerField(null=True, blank=True, default=0)
downvote = models.SmallIntegerField(null=True, blank=True, default=0)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)
当用户发布评论时,我希望它还创建链接到该评论的投票模型。
我是django和编程的新手,但据我了解,我需要创建一个save钩子或类似的东西吗?