来自mysql到Python 3.4和Django 1.8的多对多关系数据

时间:2015-11-27 16:47:22

标签: python django python-3.4 django-1.8

下面是我的模特。我正在使用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结构,但是对于1百万条记录,它需要超过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 })

1 个答案:

答案 0 :(得分:0)

认为您正在询问如何过滤配置文件以返回包含所选产品组合的配置文件。您可以使用双下划线语法执行此操作:

$('#send_but').attr('domain_id',domain_id);