0

私の希少な時期にDjangoを使い始めたばかりの人として、コードをよりクリーンで正しいものにする方法を学ぶのを手伝ってくれたことに感謝します。

次のように、2つのクエリセットで構成される2つのリストがあります。

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を除いて同じコードを使用しているため、これを行うためのより良い方法を見つけるのに役立つかどうか疑問に思いました。

両方のクエリセットを含む1つのリストにリストを組み合わせてみましたが、データが送信されるクエリセットに応じてz.company_nameまたはz.industry_nameを取得するように指示する方法がわからないという明らかな問題を除いて機能します。から、すべてが同じリストの一部になったからです。

4

2 に答える 2

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 %}
于 2012-12-08T19:12:08.170 に答える
0

コードをより一般的にしたい場合は、名前をより一般的にするのに役立ちます。システム全体industry_nameを変更company_nameすることは可能でしょうか?name

于 2012-12-08T19:04:32.660 に答える