我正在 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
最佳答案
您需要一个 ForeignKey
从 OrderLine
进行 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/