-1

我在从 Django 视图中提取产品列表时遇到了一个小问题。我有一个产品页面,它可以浏览我模型中的所有产品,其中勾选了“活动”复选框。您还可以将子产品分配给这些产品。

如果产品有分配给它的子产品,而不是加载具有更多内容的页面,它将加载具有子产品列表的页面。然而,目前在模板中它会循环并拉出所有产品。但是,目前如果一个产品有 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 %}

回答

事实证明,我不需要链接查询集,我可以将产品拉到一起。因为有另一个功能在做其他工作。为混乱道歉,但谢谢。我已经更新了答案。

4

1 回答 1

1

回答

事实证明,我不需要链接查询集,我可以将产品一起拉出。因为有另一个功能在做其他工作。为混乱道歉,但谢谢。我已经更新了答案。

于 2013-04-22T10:53:05.993 回答