[英]Django prefetch_related outputs None
I'm new to Django. 我是Django的新手。 I am making a simple store.
我正在做一个简单的商店。 Currently I am working on the Order section.
目前,我正在处理“订单”部分。 Every Order has Order Items inside it.
每个订单中都有订单项。 Every order item has some values and a product id.
每个订单商品都有一些值和产品ID。
What I am trying to display on the index.html, is the orders and its items inside it. 我想在index.html上显示的是订单及其内的项目。 However
order.items
always outputs order.OrderItem.None
但是
order.items
总是输出order.OrderItem.None
views.py views.py
class IndexView(generic.ListView):
template_name = 'order/index.html'
context_object_name = 'all_orders'
def get_queryset(self):
return Order.objects.all().prefetch_related('items')
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
return context
views.py views.py
# Create your models here.
class Order(models.Model):
user = models.ForeignKey(User, related_name='orders')
created_at = models.DateTimeField(auto_now_add=True, null=True)
class OrderItem(models.Model):
product = models.ForeignKey(Product)
order = models.ForeignKey(Order, related_name='items')
item_name = models.CharField(max_length=255, null=True, blank=True)
item_price_in_usd = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True)
def __str__(self):
return self.product.name
index.html 的index.html
{% for order in all_orders %}
<tr>
<td>{{ order}}</td>
<td>{{ order.created_at}}</td>
<td>{{ order.items}}</td>
</tr>
{% endfor %}
Ok, I have found to solution. 好的,我找到了解决方案。 Apparently you have to add
.all
显然您必须添加
.all
{% for order in all_orders %}
<tr>
<td>{{ order}}</td>
<td>{{ order.created_at}}</td>
<td>
{% for items in order.items.all %}
<td>{{ items.item_name}}</td>
{% endfor %}
</td>
</tr>
{% endfor %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.