我的心情像:家庭约会。我需要获取用户使用的平均心情。
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条目获得平均模式。
答案 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_mood
为None
。因此top_mood
是Mood
的对象,您可以查询top_mood.moods
以获取心情的“名称”。
注意:我建议您修复术语,例如将
moods
重命名为name
。您的UserMood
似乎是多对多关系,因此您可能需要解决此问题。