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

标签 python django

我有两个模型 - 订单和费用。费用是与特定订单相关的粗略 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/

相关文章:

python - 我如何使用 django.contrib.comments.forms 制作表格?

c++ - C++ 库的 Python 包装器

python - 如何从嵌套字典中查找列表组合

python - celery 时间表不起作用并使用 Django 得到 KeyError

python - 无法访问已部署版本的 AppStats

python - import surprise 在 python3 中抛出 ContextualVersionConflict 错误

python - 如何在应用程序的 urls.py 中设置路径以显示 localhost :8000/xxx(with django2. 1.8)

python - nginx+gunicorn 400错误

Python/Django shell 无法启动

jquery - 如何作为 API 向 Django 检索/提供 CSRF token