2010-10-15 3 views
1

comment puis-je utiliser les modèles pour effectuer une jointure et compter requête comme celui ci-dessous:comment effectuer count et rejoindre 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 

Voici mes modèles:

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"),) 

Répondre

3

Ce que vous recherchez est Aggregation/annotation. Avec l'objet Count que vous pourriez faire quelque chose comme ceci:

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

Notez que cela ne fonctionne pas parce que je ne comprenais pas vraiment ce que sont les objets que vous avez essayé d'aller chercher, mais j'espère que cela sera utile que un guide

+0

pense que je l'ai eu. Merci! – goh