Джанго группа ФК по полю
Я работаю над простым инструментом группировки ключевых слов.
Фраза представляет ключевое слово в поисковой системе. 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)