2010-10-15 38 views
1

如何使用這些模型來類似下面的執行聯接和統計查詢:如何執行計數並加入django?

select count(*),site_url from connection_ss 
    join site_ss on to_id_id = site_id 
     where site_ss.source_id = 1 group by site_url order by count desc 

這裏是我的模型:

class site(models.Model): 
    site_id = models.AutoField(primary_key=True) 
    site_url = models.URLField(unique=True) 
    human_verified = models.BooleanField(default=False) 
    last_entry2 = models.DateTimeField(default='2009-01-01') 
    source_id = models.ForeignKey(source) 
    author_alias = models.TextField() 

class connection(models.Model): 
    from_id = models.ForeignKey(site,related_name="from_get") 
    to_id = models.ForeignKey(site,related_name = "to_get") 

    class Meta: 
     db_table = "connection_ss" 
     unique_together = (("from_id","to_id"),) 

回答

3

你在找什麼是 Aggregation/annotation。隨着Count對象,你可以做這樣的事情:

Connection.objects.filter(site__to__source=1).annotate(Count('site_url')).order_by('-count') 

請注意,這是行不通的,因爲我並沒有真正理解什麼是你想獲取的對象,但我希望這將是有幫助指南

+0

認爲我明白了。謝謝! – goh 2010-10-15 07:35:51