gpt4 book ai didi

Django 一对多

转载 作者:行者123 更新时间:2023-12-02 09:39:26 26 4
gpt4 key购买 nike

我正在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com