我正在django实施一个小型电子商店应用程序。 我的问题涉及使用许多OrderLines建模订单: 如何使用直接从订单访问的OrderLines建模Order to OrderLines关系,即
Order
def addOrderLine
def allOrderLines
我想从订单访问OrderLines而不必直接从db获取它们。 Django提供了定义ForeignKeys的可能性,但这并不能解决我的问题,因为我必须定义以下内容:
class OrderLine(models.Model):
order = models.ForeignKey(Order)
有了这个定义,我必须直接从db获取OrderLines而不是通过Order。
我可能会使用此定义并在Order
级别提供方法。但是,这不起作用,因为如果我在Order
文件中的OrderLine
上方定义models.py
,则Order
看不到OrderLines
答案 0 :(得分:8)
答案 1 :(得分:6)
如果我理解正确的话,那么你正在寻找多对一的反转,即一个访问者,它为你提供一组orderlines
每order
个。{/ p>
幸运的是,创建多对一链接的行为可以帮到您。试试这个:
o = Order.objects.get(id=X)
lines = o.orderline_set.all()
行现在应该包含整组链接的订单行。它似乎没有被广泛记录,但如果您仔细阅读many-to-one documentation中的示例代码,您将始终看到此功能。
注意:
orderline
是故意的,它总是小写的。