gpt4 book ai didi

python - Django中2个模型之间的关系

转载 作者:行者123 更新时间:2023-12-03 19:35:51 24 4
gpt4 key购买 nike

我有两个模型——订单和费用。费用是与特定订单相关的粗略 list 。我怎样才能在这两个模型之间建立这样的关系?

models.py - 订购

class Order(models.Model):

user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="order",blank=True,null=True)
client_name = models.CharField(max_length=100)
event_name = models.CharField(max_length=100)
contact = models.CharField(max_length=15)
event_date = models.DateField(auto_now_add=False,auto_now=False)
expenses = models.IntegerField(default=0,null=True,blank=True)

Models.py - 费用
class ProjectExpense(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="project_expense",null=True,blank=True)
order_id = models.IntegerField(default='0')
exp = models.CharField(max_length=100)
exp_desc = models.TextField(null=True,blank=True)
amount = models.IntegerField(default='0')

def __str__(self):
return self.exp

我尝试使用当前订单分配字段订单 ID。但是我将如何通过当前的订单。

最佳答案

我猜你需要多对一关系:一个订单可以有多项费用?

为此,您可以从 Order 模型中删除费用属性。
您需要像这样修改 ProjectExpense 模型的 order_id 属性(正如@Lambo 已经评论过的那样):

order = models.ForeignKey(Order, on_delete=models.CASCADE)

当您查询订单模型时,如果您要求相关费用,则将包括在内,反之亦然。

对象在后端创建如下:

新命令:
# input contains the data received from frontend
Order.objects.create(user_id=input.user_id,
client_name=input.client_name,
event_name=input.event_name,
contact=input.contact,
event_date=input.event_date)

新费用:
# input contains expense details received from frontend
ProjectExpense.objects.create(user_id=input.user_id,
order_id=input.order_id,
exp=input.exp,
exp_desc=input.exp_desc,
amount=input.amount)

重要的是你写 order_id=尽管模型本身的属性称为 order .

关于python - Django中2个模型之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61203087/

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