python - 上下文 `Order.Items` 未出现在 Django Admin 的 PDF 文件中

标签 python django django-views

你好,

我正在尝试向我的管理员添加一项功能,可以从 PDF 文件下载订单详细信息,到目前为止,除了 Order.Model 未完全显示之外,该功能已取得成功。

所以我有3个模型:Item , OrderItemOrderOrderOrderItem 具有多对多关系和 OrderItem有一个外键 Item .

在模板中,我尝试在 Order.Items 之间循环这是 items = models.ManyToManyField(OrderItem)但它没有渲染任何数据。

这是 models.py

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(OrderItem)

这是views.py

@staff_member_required
def admin_order_pdf(request, order_id):
    order = get_object_or_404(Order, id=order_id)
    html = render_to_string('pdf.html', {'order': order})
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'filename="order_{}.pdf"'.format(Order.id)
    weasyprint.HTML(string=html).write_pdf(response)
    return response

这是 url.py

    path('admin/order/(<order_id>\d+)/pdf/', views.admin_order_pdf, name='admin_order_pdf')

这是 pdf.html 模板,仅显示为突出显示

                    Ordered on: {{order.ordered_date}}  <----------Showing
                    
                    {% for order_item in order.items.all %}
                    {{ order_item.item.title }}         <----------Not Showing
                    {% endfor %}

我什至尝试删除 forloop 但仍然没有发生

                    Ordered on: {{order.ordered_date}}  <----------Showing
                    
                    {{ order_item.item.title }}         <----------Not Showing

最佳答案

我想我没有足够的信息来回答,但从我在这里看到的,您只是从 View (单个订单)传递一个订单,而不是查询集或任何其他可迭代的模板。我是否缺少查询集或可迭代对象?

如果您想访问与订单相关的其他对象(例如 OrderItem),则您在模板中缺少它。从您的模型中我可以看到 Order 与 OrderItem 有关系,而不是 Items。项目是您尝试在 View 中访问的项目。 (你有 Items 模型吗?)

删除循环不起作用,因为模板中没有可用的 order_item 变量。

关于python - 上下文 `Order.Items` 未出现在 Django Admin 的 PDF 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64345251/

相关文章:

python - 将文件保存到 Amazon Web Service s3

python - 在 pandas 中存在 NaN 的情况下从日期时间列中提取四分之一

python - 我目前在 Django 中提供我的静态文件。我如何使用 Apache2 来执行此操作?

Django - 表单 - 自动填充和隐藏外键字段

python - 反转 '',参数 '' 和关键字参数 '{}' 未找到

python - 复制 pyqt 表选择,包括列标题和行标题

python - 在包含数据文件的构建环境中安装 python egg

python - 如何修复由 <functionwrapper at 0x7fd2e88c98c0>, "Cannot import name path"启动的线程中未处理的异常

python - 在 Python/Django 中存储 UI 消息字符串的最佳实践是什么?

python - Django 如何验证用户是否已经存在