2016-05-11 10 views
1

Ich arbeite an einem einfachen Keyword-Gruppierungs-Tool. Ich möchte Sätze nach Anzahl der gleichen URLs in SERP gruppieren.Django Modellgruppe von ManyToMany Übereinstimmungen zählen

Phrase stellt Keyword in der Suchmaschine dar. SerpEntry stellt Link vor Ort dar.

Ich bin auf der Suche nach einer Möglichkeit zur Auswahl Phrasen, die mindestens N gleiche URLs in SerpEntry haben.

Hier sind meine Modelle:

class Phrase(models.Model): 
    text = models.CharField(max_length=1000, unique=True) 
    _serp = models.OneToOneField(Serp, null=True, blank=True, related_name='phrase', db_column="serp") 

class SerpEntry(models.Model): 
    phrase = models.ForeignKey(Phrase, related_name='serp_entry') 
    position = models.PositiveIntegerField() 
    url = models.TextField(max_length=2000) 
    title = models.CharField(max_length=100) 
    snippet = models.TextField() 

Haben Sie Vorschläge, wie das zu tun?

Antwort

1

So etwas wie dies funktionieren kann:

Phrase.objects.filter(serp_entry__id__gt=0, #or whatever filter you need 
      ).annotate(has_count=Count('id') 
      ).order_by('serp_entry__phrase', #or whatever order you need 
      ).filter(has_count__gt=100) 
+0

Ich werde dies morgen heraus überprüfen. Danke für den Vorschlag! –