小编sna*_*orm的帖子

具有外键的模型字段的聚合平均值 - Django REST

我正在使用星星创建一个评级系统。

这是我的地方模型:

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)

python-2.7 django-rest-framework

5
推荐指数
0
解决办法
1126
查看次数

创建模型时使用外键自动创建模型-Django

我要在网页上添加评论部分,并希望用户能够对评论进行增票或减票。

我的模型是这样的:

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钩子或类似的东西吗?

django django-models

4
推荐指数
1
解决办法
3145
查看次数