我正在编写一个脚本,我希望从访问的网站获取每次出现的值。从Django查询中获取非唯一值
首先,我得到访问的网站:
sd = SessionData.objects.filter(session_id__mlsession__platform__exact=int('2'))
result = sd.values('last_page')
然后我拿到我期待值:
[{'last_page': 10L}, {'last_page': 4L}, {'last_page': 10L}]
就这样,我想和10L的页面作为一个id有双4L的重量,因为它出现了两次。
我尝试从列表中的值:
wordData = KeywordData.objects.filter(page_id__in=result)
但当时我只得到唯一值:
[<KeywordData: 23>, <KeywordData: 24>, <KeywordData: 8>]
那里我想要的结果将是:
[<KeywordData: 23>, <KeywordData: 24>, <KeywordData: 8>, <KeywordData: 23>, <KeywordData: 24>]
我设法得到一个唯一列表的唯一方法是迭代for循环,但这不是一个真正的选择我正在处理的数据有数百万条记录。
django中的“__in”过滤器是否仅返回唯一条目?有没有一种方法可以正确输出“django”?
非常感谢您的帮助!
编辑:相关机型:
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')
的表格会议和页在它们的ID,这是自动递增的术语仅提及。
我想看看会话的最后一页,因此只需要看看last_page_id,并从各个页面获取关键字。如果同一页面通常是最后一页,我想增加更多的权重,如前所述。
让我知道是否需要更多信息,并再次感谢!
请出示你的'SessionData'和'KeywordData'模式 –
我现在又增加了他们。 :) –