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条经验 获得超5个赞
我想我没有足够的信息来回答,但从我在这里看到的,您只是从视图(单个订单)传递一个订单,而不是查询集或任何其他可迭代到模板。我错过了查询集或可迭代吗?
如果您想访问与订单相关的其他对象(例如 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 关注
- 153 浏览
添加回答
举报