Джанго группа ФК по полю

Я работаю над простым инструментом группировки ключевых слов.

Фраза представляет ключевое слово в поисковой системе. SerpEntry представляет собой ссылку на сайт.

Я ищу способ группировки фраз по URL SerpEntry.

Вот мои модели:

class Phrase(models.Model):
    text = models.CharField(max_length=1000, unique=True)

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=1000)
    snippet = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

Есть ли у вас какие-либо предложения о том, как это сделать?

Пример результата, которого я хочу достичь:

urls = [
    'url1': [phrase1,phrase2,phrase3],
    'url2': [phrase2,phrase4,phrase5],
]

1 ответ

Не уверен, что вы можете написать запрос, который прикрепляет список фраз к каждому объекту ввода. Возможно, вам придется сделать группировку в Python. defaultdict(list) может пригодиться. что-то вроде

urls = defaultdict(list)
for entry in grab_all_entries.filter().select_related('phrase'):
    urls[entry.url].append(phrase)
Другие вопросы по тегам