Django 一对多

标签 django model modeling

我正在 django 中实现一个小型电子商店应用程序。 我的问题涉及对具有多个 OrderLines 的 Order 进行建模: 如何使用可直接从订单访问的 OrderLines 来建模 Order 到 OrderLines 的关系,即

Order
    def addOrderLine
    def allOrderLines

我想从订单访问 OrderLines,而不必直接从数据库获取它们。 Django 提供了定义外键的可能性,但这并不能解决我的问题,因为我必须定义以下内容:

class OrderLine(models.Model):
   order = models.ForeignKey(Order)

根据这个定义,我必须直接从数据库获取 OrderLines,而不是通过 Order。

我可能会使用此定义并在Order 级别提供方法。但是,这不起作用,因为如果我在 models.py 文件中的 OrderLine 上方定义 Order,则 Order 看不到 OrderLines

最佳答案

您需要一个 ForeignKeyOrderLine 进行 Order。像这样的事情:

from django.db import models

class Order(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)

class OrderLine(models.Model):
    order = models.ForeignKey(Order, related_name='orderlines')
    name = models.CharField(max_length=30)

    def __unicode__(self):
        return self.name

# Create a new order in the DB:
>>> order = Order.objects.create()
# Add a few items to this order:
>>> order.orderlines.create(name='Candied Yams')
<Candied Yams>
>>> order.orderlines.create(name='Minty loin of Lamb')
<Minty loin of Lamb>
# Get all items for this order:
>>> order.orderitems.all()
[<Candied Yams>, <Minty loin of Lamb>]

这是pretty well documented行为:)

关于Django 一对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4562985/

相关文章:

Django 过滤器 |循环遍历表单字段

python - 如何根据用户组显示 Django 模板?

windows - MVVM 引用程序集

architecture - 编写概念证明 (PoC) 应用程序的最佳方式是什么?

r - 模型摘要中有序和无序因子与数值预测变量的解释

python - Django 中表单集的自定义验证

python - Spotify Web API 经常给出 500 错误

c# - 用于常见操作的 C# 属性的有序列表?

python-2.7 - SQLAlchemy 辅助连接模型在奇怪的情况下失败

uml - 最好的 UML 图表工具是什么?