簡體   English   中英

Django prefetch_related輸出無

[英]Django prefetch_related outputs None

我是Django的新手。 我正在做一個簡單的商店。 目前,我正在處理“訂單”部分。 每個訂單中都有訂單項。 每個訂單商品都有一些值和產品ID。

我想在index.html上顯示的是訂單及其內的項目。 但是order.items總是輸出order.OrderItem.None

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

# 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

{% for order in all_orders %}
        <tr>
            <td>{{ order}}</td>
            <td>{{ order.created_at}}</td>
            <td>{{ order.items}}</td>
        </tr>
    {% endfor %}

好的,我找到了解決方案。 顯然您必須添加.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM