如何从Django多对多关系中获取数据?

时间:2018-12-03 08:02:47

标签: django django-templates

如何在模板上获取每个订单的所有产品。请帮助我

Model.py

class Order(models.Model):
    customer_id= models.ForeignKey(Customers )
    delivery_add_id= models.ForeignKey(DeliveryAddresses)




class OrderItem(models.Model):
    order_id = models.ForeignKey(Order, related_name='orderId')
    product_id = models.ForeignKey('Products', related_name='productId')



class Products(models.Model):
    cat_id = models.ForeignKey('Categories')
    name = models.CharField(max_length=200)
    price = models.FloatField()

模板

   <tr>
        <th>Product ordered</th>
        <td>
             <ul>
                {% for prod in order.orderId.productId.product_set.all%}
                <li>{{pro}}</li>
                {% endfor %}

            </ul> 

            {{order.orderId.productId.product_set.all}}
        </td>
    </tr>

https://i.stack.imgur.com/XJ3zG.png


Views.py

class productList(ListView):
    model= Products
    context_object_name = 'product_list'

    def get_queryset(self):
        return Products.objects.all()

class productDetail(DetailView):
    context_object_name = 'product'
    model = Products
    queryset = Products.objects.all()


class orderList(ListView):
    model = Order
    context_object_name= 'order_list'
    def get_queryset(self):
        return Order.objects.all()


class orderDetail(DetailView):
    context_object_name ='order'
    model = Order
    queryset= Order.objects.all() 

这是我建立的一般关系。我想做的是,在模板中,我想显示每个订单的所有产品。订单产品:多对多关系。请帮助我

1 个答案:

答案 0 :(得分:0)

应该是这样的:

{% for orderItem in order.orderId.all %}
   {% for pro in orderItem.productId.all %}
                <li>{{pro}}</li>
   {% endfor %}
{% endfor %}