3 回答

TA貢獻1891條經驗 獲得超3個贊
您正在將 Manytomany 字段與 一起使用OrderItem
。因此,為了達到OrderItem
,您將必須通過through
在后臺創建的模型。您through
在編寫時訪問的是模式order.items.all()
而不是OrderItem
模型。
Order
假設您的意圖是在和模型之間創建多對多關系Item
。那么您應該如何創建您的ManyToMany
class Item(models.Model):
? ? title = models.CharField(max_length=100)
? ? price = models.FloatField()
class OrderItem(models.Model):
? ? user = models.ForeignKey(settings.AUTH_USER_MODEL,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? on_delete=models.CASCADE)
? ? ordered = models.BooleanField(default=False)
? ? item = models.ForeignKey(Item, on_delete=models.CASCADE)
? ? quantity = models.IntegerField(default=1)
? ? variation = models.ManyToManyField(Variation)
class Order(models.Model):
? ? items = models.ManyToManyField(Item, through='OrderItem')
這將解決您的問題。

TA貢獻1993條經驗 獲得超6個贊
我想我沒有足夠的信息來回答,但從我在這里看到的,您只是從視圖(單個訂單)傳遞一個訂單,而不是查詢集或任何其他可迭代到模板。我錯過了查詢集或可迭代嗎?
如果您想訪問與訂單相關的其他對象(例如 OrderItem),則您在模板中缺少它。從您的模型中我可以看到 Order 與 OrderItem 有關系,而不是 Items。項目是您嘗試在視圖中訪問的項目。(你有 Items 模型嗎?)
刪除循環不起作用,因為模板中沒有可用的 order_item 變量。

TA貢獻1828條經驗 獲得超6個贊
{{order.ordered_date}}這是無效的。根據您在此處顯示的內容,您的Order模型沒有任何字段或方法。ordered_date
Ordered on: {{order.ordered_date}} # This is wrong and invalid
{% for order_item in order.items.all %}
{{ order_item.item.title }} # This is valid, use this method to render other fields
{% endfor %}
當你轉換上面的html代碼時,它會生成這樣的pdf。item_1這是項目的標題。{{order.ordered_date}}沒有工作而是{{ order_item.item.title }}工作并且它被渲染在pdf中。
您共享的第二個片段無效,不會顯示任何動態數據。它只會渲染Ordered on:
Ordered on: {{order.ordered_date}} <----------Invalid {{ order_item.item.title }} <----------Invalid
我希望這能解決您的疑問。
- 3 回答
- 0 關注
- 207 瀏覽
添加回答
舉報