我开始使用Django,虽然我已经阅读了这本书并且用Google搜索了,但我担心我没有在某些概念上建立联系以便能够解决这个问题。
我需要显示与特定公司相对应的多个值。用户首先选择三个公司进行比较,然后响应显示这些公司的数据。
在我看来,我创建了我在模板中迭代的查询集,以便按如下方式显示数据:
VIEWS EXCERPT:
C1 = form.cleaned_data['Company1']
C2 = form.cleaned_data['Company2']
C3 = form.cleaned_data['Company3']
company_names = [C1,C2,C3]
company1 = (Company_stats.objects.filter(period__exact=P, company_name__exact=C1))
company2 = (Company_stats.objects.filter(period__exact=P, company_name__exact=C2))
company3 = (Company_stats.objects.filter(period__exact=P, company_name__exact=C3))
company_list = [company1,company2,company3]
TEMPLATE EXCERPT:
{%for c in company_list%}
{%for z in c %}
{{ z.company_name }}
{{ z.nxt_m_ret_est }}
{{ z.nxt_m_ret_rat }}
{% endfor %}
{% endfor %}
这很有效 - 但是,由于我有更多移动部件(我为了我的问题而简化了视图),它变成了一个无休止的查询集清单 - 我100%肯定这不是干的(尽管如此)洗衣参考;)更不用说上下文的长度。
如果有人能帮助我学会以正确的方式做到这一点,我真的很感激。非常感谢你提前!
答案 0 :(得分:1)
试试这个:
companies = ['Company1', 'Company2', 'Company3']
company_names = [form.cleaned_data[c] for c in companies]
company_list = Company_stats.objects.filter(
period__exact=P,
company_name__in=company_names
)
即使这不完全符合您的需要,类似的东西也应该有用。
答案 1 :(得分:0)
我还要补充说,千篇一律的查询是Managers真正闪耀的地方。如果您发现需要在代码中的其他位置进行相同的查询,请务必考虑使用它们。我暂时避开了它们,因为我觉得它们很复杂,但它们真的不是那么糟糕,它们可以清理你的代码。