2010-12-03 25 views
0

我有表冷標記。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嗎?

已更新: 換句話說:我正在運行所有表格並計算所有獨特的媒體。如果我第二次發現它,我不計算它。其他字詞:我需要統計獨特的媒體字段。

+0

媒體模型的外觀如何?它有一個叫做'投票'的字段嗎?你的意思是媒體或標記實例? – 2010-12-03 17:41:19

回答

1

我假設「馬克」模式是用戶如何投票的。要獲得他們的標記計數所有的媒體模式,你需要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')) 
0
mk = Mark.objects.all() 
    mk.media.count() 

U可以使用計數功能,但不知道烏爾問題的移動你想要從它做或什麼是投票..

編輯:

  One row of media 

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