首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把我的名单按金融机构分开

把我的名单按金融机构分开
EN

Stack Overflow用户
提问于 2012-05-18 15:25:46
回答 1查看 118关注 0票数 0

我需要帮助解决我的问题。我已经创建了我所有投资的清单,但现在我需要将它们按金融机构分开。我正试图打印一份报告,报告中将每家金融机构的所有投资都放在一个单独的页面上,但我很难将它们分开。

例如,我想要的是:

TD银行-从我的查询中对TD的所有投资

  • 下一页-

从我的查询看Scotia银行对Scotia的-all投资

下面是我的views.py,它包含查询并将所有信息添加到我的列表中。

有人能帮我找个办法把它们分开,让金融机构把它们分开吗?

代码语言:javascript
复制
def confirmations_report(request, *args, **kwargs):
from investments.models import Investment, InvestmentManager
from reports.forms import ConfirmationsForm
import ho.pisa as pisa
import cStringIO as StringIO
import os.path
confirm_letter_list = []
context = {}

if request.POST:
    form = ConfirmationsForm(request.POST)
    if form.is_valid():
        start_date = form.cleaned_data['start_date']
        end_date = form.cleaned_data['end_date']
        investments = Investment.objects.all().filter(contract_no = "",maturity_date__range=(start_date, end_date)).order_by('financial_institution')
        for i in investments:
            confirm_letter_list.append({
                'fi':i.financial_institution,
                'fi_address1': i.financial_institution.address1,
                'fi_address2': i.financial_institution.address2,
                'fi_city': i.financial_institution.city,
                'fi_prov': i.financial_institution.state_prov,
                'fi_country': i.financial_institution.country,
                'fi_postal': i.financial_institution.postal,
                'primary_owner': i.plan.get_primary_owner().member,
                'sin': i.plan.get_primary_owner().member.client.sin,
                'type': i.product.code,
                'purchase_amount': i.amount,
                'purchase_date': i.start_date,
            })
            context['confirmlist'] = confirm_letter_list
        context['inv'] = investments
    if request.POST.has_key('print_report_submit'):
        context['show_report'] = True
        context['mb_logo'] = os.path.join(os.path.dirname(__file__), "../../../media/images/mb_logo.jpg")
        html = render_to_string('reports/admin/confirm_report_print.html', RequestContext(request,context))
        result = StringIO.StringIO()
        pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("ISO-8859-1")), result)
        response = HttpResponse(result.getvalue(), mimetype='application/pdf')
        response['Content-Disposition'] = 'attachment; filename=unreceived-confirmations.pdf'
        return response

else:
    form = ConfirmationsForm()

context['form'] = form
return render_to_response('reports/admin/confirm_report.html', RequestContext(request, context))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-18 15:35:34

使用带有列表的defaultdict

代码语言:javascript
复制
from collections import defaultdict
my_list = defaultdict(list)
for i in investments:
   my_list[i.financial_institution].append({ ... })

以下是您将如何使用它:

代码语言:javascript
复制
{% for i in my_list.iteritems %}
   Institution : {{ i.0 }}
   {% for z in i|slice:"1:" %}
     Total Items for {{ i.0 }} : {{ z|length }}
     {% for d in z }}
        {{ d.fi_address1 }}
        ....
     {% endfor %}
   {% endfor %}
{% endfor %}

下面是一个简化的示例:

代码语言:javascript
复制
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d['hello'].append({1:'One', 2:'Two'})
>>> for i in d.iteritems():
...    print i[0]
...    for z in i[1:]:
...     print z
... 
hello
[{1: 'One', 2: 'Two'}]

如您所见,内环包含您添加的dicts列表,因此您需要相应地调整您的循环逻辑。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10655435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档