python - 任何人都可以帮助正确使用 M2M 和模板吗?
问题描述
我需要显示菜单的名称和数量。
但是即使客户的地址和他们的名字正确,这个网页也不会显示。
我的 Django 项目中有这些模型(客户端):
class Order(models.Model):
client = models.ForeignKey(Client, on_delete=models.CASCADE)
address = models.CharField(
max_length=100,
)
created_at = models.DateTimeField(auto_now_add=True)
items = models.ManyToManyField(
Menu,
through='OrderItem',
through_fields=('order', 'menu'),
)
class OrderItem(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE)
menu = models.ForeignKey(Menu, on_delete=models.CASCADE)
count = models.PositiveSmallIntegerField()
和下面的模板页面。
{% for order in order_set %}
<tr>
<td>{{ order.client.name }}</td>
<td>{{ order.address }}</td>
<td>{% for item in order.items_set.all %}{{ item }}{% endfor %}</td>
<td>{{ order.item_set.all.count }}</td>
</tr>
{% endfor %}
</table>
模型(合作伙伴方)如下所示。
class Menu(models.Model):
partner = models.ForeignKey(
Partner,
on_delete=models.CASCADE,
)
image = models.ImageField(
verbose_name="메뉴 이미지"
)
name = models.CharField(
max_length=50,
verbose_name="메뉴 이름"
)
price = models.PositiveIntegerField(
verbose_name="가격"
)
任何人都可以帮忙吗?
解决方案
尝试这个:
{% for order in order_set %}
<tr>
<td>{{ order.client.name }}</td>
<td>{{ order.address }}</td>
<td>{% for item in order.items.all %}{{ item }}{% endfor %}</td>
<td>{{ order.items.all.count }}</td>
</tr>
{% endfor %}
即,替换order.items_set.all
为order.items.all
. 没有定义的关系items_set
。您在Order
模型上定义的字段是items
,因此您需要访问该字段。
该FOO_set
方法用于外键等反向关系。在这种情况下,您正在关注一段关系。
推荐阅读
- html - SSRS 文本框的 HTML 格式
- node.js - 如何在服务器上保存 JWKBaseKeyObject 并检索
- azure-powershell - 如何使用 PowerShell 为特定资源和特定策略获取 Azure Policy 合规性报告?
- reactjs - 无法引用 id,因为代码尚未返回
- python - 一旦在文件 aka hold.txt PYTHON3 中找到日期,代码就不会继续下一个输入
- react-native - 垂直平面列表上水平平面列表项的焦点旁白
- google-chrome-extension - 用于转发电子邮件的 Chrome 扩展程序
- typescript - Typescript AMD 模块 - 脚本未运行
- python - 如何从另一个 docker 容器中使用 python?
- operating-system - 为什么进程在 qemu 中遇到断点后无法继续?