2017-04-21 47 views
0

当试图显示多对多关系模板的“槽表”的附加字段时,出现以下问题。 我model.py:Django:在模板中显示许多其他字段

class Product(models.Model): 
    productName = models.CharField(max_length=500) 
    price = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True) 
    def __str__(self): 
    return self.productName 
    def get_absolute_url(self): 
    return reverse('itake:productList') 

class Order(models.Model): 
    orderID = models.CharField(max_length=100, blank=True, null=True) 
    products = models.ManyToManyField(Product,related_name="order_item", through="OrderItem") 
    def __str__(self): 
     return self.orderID 

class OrderItem(models.Model): 
    product = models.ForeignKey(Product, on_delete=models.CASCADE,null=True) 
    order = models.ForeignKey(Order,on_delete=models.CASCADE, null=True) 
    orderQuantity = models.IntegerField(default=10) 
    def __str__(self): 
     return self.order.orderID + '-' +self.product.productName 

我views.py:

def orderDetails(request,order_id): 
    order = get_object_or_404(Order,pk=order_id) 
    products = order.products.all() 
    context = {'order': order,'products':products} 
    return render(request, 'itake/orderDetails.html', context) 

我的模板:

{% for products in products %} 
    <p>{{products.productName}} | 
     {{products.price}} | 
     {{products.orderQuantity}}</p> 
    {% endfor %} 

但是,它只能列出产品名称和价格,orderQuantity是没有在网页上显示。

回答

1

orderQuantityOrderItem的财产,而不是Product

尝试:

class OrderItem(models.Model): 
    product = models.ForeignKey(Product, on_delete=models.CASCADE,null=True) 
    order = models.ForeignKey(Order,on_delete=models.CASCADE, null=True, related_name='items') 
    orderQuantity = models.IntegerField(default=10) 
    def __str__(self): 
     return self.order.orderID + '-' +self.product.productName 

而且在模板:

{% for item in order.items %} 
<p> 
    {{ item.product.productName }} | 
    {{ item.product.price }} | 
    {{ item.orderQuantity }} 
</p> 
{% endfor %} 

也许你想改变模型的models.CASCADE,因为这将导致删除产品,如果订单被删除。

相关问题