Группа моделей Django по количеству совпадений ManyToMany
Я работаю над простым инструментом группировки ключевых слов. Я хочу сгруппировать фразы по количеству одинаковых URL в поисковой выдаче.
Фраза представляет ключевое слово в поисковой системе. SerpEntry представляет собой ссылку на сайт.
Я ищу способ выбрать фразы, которые имеют как минимум N одинаковых URL в SerpEntry.
Вот мои модели:
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()
Есть ли у вас какие-либо предложения о том, как это сделать?
1 ответ
Нечто подобное может работать:
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)