作为刚刚开始在我的稀缺时间使用Django的人,我提前感谢您的时间,帮助我学习如何使我的代码更清洁和正确。
我有两个由两个查询集组成的列表,如下所示:
company_list = [Company_stats.objects.filter(period__exact=P, company_name__in=master_names)]
industry_list = [Industry_stats.objects.filter(period__exact=P, industry_name__in=master_names)]
我遍历模板中的两个列表以创建一个小表。
{%for c in company_list%}
{%for z in c %}
{{ z.company_name }}
{{ z.nxt_m_ret_est }}
{{ z.nxt_m_ret_rat }}
{% endfor %}
{% endfor %}
{%for c in industry_list%}
{%for z in c %}
{{ z.industry_name }}
{{ z.nxt_m_ret_est }}
{{ z.nxt_m_ret_rat }}
{% endfor %}
{% endfor %}
这样可以正常工作,因为我使用相同的代码,除了z.industry_name与z.company_name之外我想知道你是否可以帮我找出更好的方法来做到这一点。
我已经尝试将列表合并到一个列表中,其中包含两个查询集,除了明显的问题,我不知道如何告诉它检索z.company_name或z.industry_name,具体取决于查询集在哪里数据来自,因为一切都成为同一个列表的一部分。
答案 0 :(得分:2)
在两个模型上将字段更改为name
后,您可以将两个查询集放在同一个列表中,然后对其进行迭代。
master_list = [model.objects.filter(period__exact=P, name__in=master_names) for model in (Company_stats, Industry_stats)]
...
{% for l in master_list %}
{% for i in l %}
{{ i.name }}
{{ i.nxt_m_ret_est }}
{{ i.nxt_m_ret_rat }}
{% endfor %}
{% endfor %}
答案 1 :(得分:0)
如果您希望代码更通用,那么有助于使您的名称更通用。您是否可以在整个系统中将industry_name
和company_name
更改为name
?