Django ビューから製品のリストを引き出す際に小さな問題が発生しています。「アクティブ」チェック ボックスがオンになっているモデル内のすべての製品を参照する製品ページがあります。これらの製品にサブ製品を割り当てることもできます。
製品にサブ製品が割り当てられている場合、より多くのコンテンツを含むページをロードするのではなく、サブ製品のリストを含むページをロードします。ただし、現時点ではテンプレート内でループし、すべての製品を引き出します。ただし、現時点では、製品に 1 つ以上のサブ製品が割り当てられている場合、割り当てられているサブ製品の数に応じて、各製品を複数回プルします。
これは、ビュー内の関数で 2 つの変数を結合するチェーンを作成したためです。しかし、サブ製品が機能するためには、これを行う必要があります。
したがって、基本的に私がする必要があるのは、割り当てられたサブ製品の数に関係なく、各製品がテンプレートに 1 回だけ表示されるように制限することです。
さらに情報が必要な場合は、お問い合わせください。:)
*回答付きの更新されたビュー *
見る:
def producthome(request):
#prod_info= Product.objects.filter(active=True, sub_product__isnull = True)
#sub_product = Product.objects.filter(sub_product__isnull = False, active=True)
partner_post= Partner.objects.all()
product_all = Product.objects.filter(active=true)
#product_all = list(chain(prod_info, sub_product))
"""
Didn't need to chain the querysets together
product_all = sorted(
chain(prod_info, sub_product),
key = attrgetter('order'), reverse=True)
"""
return render_to_response('product_multi.html',{
'product_all': product_all,
'sub_product': sub_product,
'prod_info': prod_info,
'partner_post': partner_post
}, context_instance=RequestContext(request))
テンプレート:
{% for product in product_all %}
<li>
<div>
<h2 class="posttitle colortext">{{ product.name }}</h2>
<p>{{ product.description|safe|truncatewords:13 }}...</p>
<a href="{{ product.get_absolute_url }}" class="button">More</a>
</div>
</li>
{% endfor %}
答え
クエリセットをチェーンする必要はなく、製品をまとめて引き出すことができたことがわかりました。他の仕事をしている別の機能があったので。混乱して申し訳ありませんが、ありがとうございます。答えを更新しました。