Django的。令人困惑的查询。计数项目

时间:2010-12-03 17:29:55

标签: django

我有桌子冷标记。

class Mark(models.Model):
    media = models.ForeignKey('media.Media')
    mark = models.PositiveIntegerField()
    user = models.ForeignKey(User)

    class Meta:
        unique_together = ('media_object','user')

如何获得至少有一票的媒体实例(或只计算媒体)的查询集?

我可以使用extra吗?

更新: 换句话说:我正在查看所有表格并统计所有独特的媒体。如果我第二次发现它,我不算数。 换句话说:我需要统计独特的媒体领域。

2 个答案:

答案 0 :(得分:1)

我假设“Mark”模型是用户投票的方式。要获取所有媒体模型的标记计数,您需要aggregation

from django.db.models import Count

media_with_vote_count = Media.objects.annotate(vote_count=Count('mark_set'))

然后,您可以使用引用该注释的filter()

voted_media = media_with_vote_count.filter(vote_count__gt=0)

还有其他有用的聚合。例如,您可以计算每种媒体的平均分数:

from django.db.models import Avg

media_with_markavg = Media.objects.annotate(average_mark=Avg('mark_set__mark'))

答案 1 :(得分:0)

    mk = Mark.objects.all()
    mk.media.count()

你可以使用计数功能,但不确定你的问题是你想做什么或什么是投票。

编辑:

          One row of media

          if( mk.media.count() > 0):
                    ......