我有两个模型 - 订单和费用。费用是与特定订单相关的粗略 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”指定为当前订单。但我怎样才能通过当前的命令。
最佳答案
我猜您需要一种多对一关系:一个订单可以有多项费用?
为此,您可以从订单模型中删除费用属性。 并且您需要像这样修改 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
,但编写 order_id=
很重要。
关于python - Django中2个模型之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61203087/