2010-10-15 56 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