Django获取平均值(字符串)

时间:2018-10-08 07:02:04

标签: python django python-3.x django-models

我的心情像:家庭约会。我需要获取用户使用的平均心情。

Models.py

class Mood(models.Model):
    moods=models.CharField(max_length=500)
    image = models.ImageField(upload_to='moods/', blank=True, null=True)
    count=models.IntegerField(blank=True,null=True,default=0)
    def __str__(self):
        return str(self.moods)
class UserMood(models.Model):
    user=models.ForeignKey(User,on_delete=models.CASCADE)
    mood=models.ForeignKey(Mood,on_delete=models.CASCADE)
    def __str__(self):
        return str(self.id)

views.py

    user_moods=UserMood.objects.filter(user=request.user)
    user_stats['average_mood']=''

需要基于UserMood条目获得平均模式。

1 个答案:

答案 0 :(得分:0)

通过将其指定为:

,您可以获得用户最普通的心情。
from django.db.models import Count

top_mood=Mood.objects.filter(
    usermood__user=request.user
).annotate(
    cnt=Count('usermood')
).order_by('-cnt').first()

鉴于User至少具有这样的usermood,如果没有,则top_moodNone。因此top_moodMood的对象,您可以查询top_mood.moods以获取心情的“名称”。

  

注意:我建议您修复术语,例如将moods重命名为name。您的UserMood似乎是多对多关系,因此您可能需要解决此问题。