我正在使用django,我正在尝试提出一个允许我执行以下操作的查询,
我在数据库中有一个名为url
的列。 url
列的值非常长。基本上是域名后跟一长串查询参数。
例如:
https://www.somesite.com/something-interesting-digital-cos-or-make-bleh/?utm_source=something&utm_medium=email&utm_campaign=biswanyam%20report%20-%20digital%20cos%20or%20analog%20prey&ut
http://www.anothersite.com/holly-moly/?utm_source=something&utm_medium=email&tm_campaign=biswanyam%20report%20-%20digital%20cos%20or%20analog%20prey&ut
https://www.onemoresite.com/trinkle-star/?utm_source=something&utm_medium=email&utm_campaign=biswanyam%20report%20-%20digital%20cos%20or%20analog%20prey&ut
https://www.somesite.com/nothing-interesting-bleh/?utm_source=something&utm_medium=email&utm_campaign=biswanyam%20report%20-%20digital%20cos%20or%20analog%20prey&ut
我想要一个django查询,无论URL中的查询参数如何,基本上都可以给我一个带有相同域名的带注释的URL注释。
基本上这就是我要找的东西,
{
'url': 'https://www.somesite.com/something-interesting-digital-cos-or-make-bleh', 'count': 127,
'url': 'http://www.anothersite.com/holly-moly', 'count': 87,
'url': 'https://www.onemoresite.com/trinkle-star', 'count': 94,
'url': 'https://www.somesite.com/nothing-interesting-bleh', 'count':72
}
我试过这个查询,
Somemodel.objects.filter(url__iregex='http.*\/\?').values('url').annotate(hcount=Count('url'))
这不能按预期工作。它与查询参数一起执行整个URL匹配,而不是仅匹配域名。有人可以告诉我如何实现这一点,或者至少指出我正确的方向。感谢
答案 0 :(得分:0)
这可能无法实现,因为您无法对某个字段的某些部分信息进行分组。如果您确实想要实现此目标,则可能需要考虑更改架构。您应该将url
和parameters
分别存储为2个模型字段。然后你会有一个方法,或者你想让它看起来像一个属性,使用@property
装饰器来组合它们并返回整个网址。在迁移/脚本中拆分它们以适应新模式并不太难。