Ich schreibe ein Skript, in dem ich jedes Vorkommen eines Werts von besuchten Websites abrufen möchte.Abrufen von nicht eindeutigen Werten aus einer Django-Abfrage
Erste ich besuchte Seiten:
sd = SessionData.objects.filter(session_id__mlsession__platform__exact=int('2'))
result = sd.values('last_page')
ich dann die Werte erhalten, die ich erwarte:
[{'last_page': 10L}, {'last_page': 4L}, {'last_page': 10L}]
Damit ich die Seite mit 10L als id wollen doppelt haben das Gewicht von 4L, da es zweimal erscheint.
Ich versuche, die Werte aus der Liste zu erhalten:
wordData = KeywordData.objects.filter(page_id__in=result)
aber dann habe ich nur eindeutige Werte erhalten:
[<KeywordData: 23>, <KeywordData: 24>, <KeywordData: 8>]
wo mein gewünschtes Ergebnis sein würde:
[<KeywordData: 23>, <KeywordData: 24>, <KeywordData: 8>, <KeywordData: 23>, <KeywordData: 24>]
Die einzige Möglichkeit, eine eindeutige Liste nicht zu erhalten, besteht darin, eine For-Schleife zu durchlaufen, aber das ist nicht wirklich eine Option Die Daten, mit denen ich es zu tun habe, haben Millionen von Einträgen.
Wird der Filter "__in" in Django nur für eindeutige Einträge verwendet? Gibt es einen Weg, den richtigen "Django" -Weg zu bekommen?
Vielen Dank im Voraus für Ihre Hilfe!
EDIT: Die entsprechenden Modelle:
class KeywordData(models.Model):
page = models.ForeignKey(Page, db_column='page_id', related_name='page_pageid', default=None)
site = models.ForeignKey(Page, db_column='site_id', related_name='page_siteid', default=None)
keywords = models.CharField(max_length=255, blank=True, null=True, default=None)
class MLSession(models.Model):
session = models.ForeignKey(Session, null=True, db_column='session_id')
platform = models.IntegerField(choices=PLATFORM_CHOICE)
visitor_type = models.IntegerField(default=1)
class SessionData(models.Model):
session = models.ForeignKey(Session, db_column='session_id', on_delete=models.CASCADE)
site = models.ForeignKey(Site, db_column='site_id', db_index=True, default=None, null=True)
last_page = models.ForeignKey(Page, db_column='last_page_id', default=None, null=True, related_name='session_last_page')
first_page = models.ForeignKey(Page, db_column='first_page_id', default=None, null=True, related_name='session_first_page')
Die Tabellen Session und Seite sind hinsichtlich ihrer ids, nur bezeichnet, die auto-inkrementiert sind.
Ich möchte die letzte Seite der Sitzung betrachten, also nur die last_page_id einbeziehen und die Schlüsselwörter von der jeweiligen Seite abrufen. Wenn dieselbe Seite oft die letzte Seite ist, möchte ich, wie bereits erwähnt, mehr Gewicht hinzufügen.
Lassen Sie mich wissen, wenn weitere Informationen benötigt werden, und nochmals vielen Dank!
Bitte zeigen Sie Ihre 'SessionData' und' KeywordData' Modelle –
Ich habe sie jetzt hinzugefügt. :) –