【发布时间】:2016-03-01 21:55:02
【问题描述】:
下面是我的模型。我正在使用 python 3.4 和 django 1.8
class Profile(models.Model):
pid=models.IntegerField(db_column='pid')
loc=models.CharField(max_length=100)
class Meta:
managed="false"
db_table="protbl"
class Portfolio(models.Model):
pfid = models.ManyToManyField(Profile,db_column='pfid')
portfolio=models.CharField(max_length=100)
class Meta:
managed="false"
db_table="pfotbl"
我想搜索并找到给定投资组合项目的匹配项(一个或多个)。我尝试使用下面的视图,但没有预期的运气。
我的看法是:
match_res = Portfolio.objects.filter(portfolio='portfoliofilter')
- 请指导我实现。
我正在查询集结果本身中查看 json 输出。
[{
"loc": "Singapore",
"pid": 10012,
"portfolio": [{
"portfolioname": "portfolio1",
"portfoliorank": "8"
}]
}, {
"loc": "Singapore",
"pid": 10013,
"portfolio": [{
"portfolioname": "portfolio2",
"portfoliorank": "5"
}]
}
]
使用下面的代码得到了上面的 json 结构,但是 100 万条记录需要超过 5 分钟。
res=list(match_res.values('loc','pid','__portfolioname','__portfoliorank'))
match_res_d = []
for g, items in itertools.groupby(res['parent'],
lambda x: (x['loc'], x['pid'])):
items = [{k: v for k, v in item.items()
if k not in ('loc', 'pid')}for item in items]
data.append({ 'loc': g[0], 'pid': g[1], 'child': items })
【问题讨论】:
标签: python django python-3.4 django-1.8