【发布时间】:2018-01-30 00:07:36
【问题描述】:
我正在开发一个使用 Django 1.8 的迷你项目。目的是构建一个小型计费应用程序。所以,我创建了两个模型,Bill 和 Product,如下所示。
#bill/models.py
class Bill(models.Model):
date_of_issue = models.DateField()
name = models.CharField(max_length=50, default="N/A", null=True)
address = models.CharField(max_length=150, default="N/A", null=True)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
def __str__(self):
return "{} {}".format(self.input_name, self.date_of_issue)
class Product(models.Model):
bill = models.ForeignKey(Bill, on_delete=models.CASCADE)
description = models.CharField(max_length=100, default="N/A")
quantity = models.IntegerField(default=0)
total = models.IntegerField(default=0)
通过查看模型,您可以看出我的方法是创建 Bill 和 Product 表,并通过 ForeignKey 将 Product 连接到 Bill。现在,问题是一张账单将包含至少一种产品。如果有多个产品,我应该如何在 views.py 中写下我的观点。我是 Django 开发的初学者。如果账单包含单个产品,那么我可以编写它的视图。但是如何存储多个具有不同数据的产品并将其存储在数据库中。
举例
用户将输入客户的姓名和地址。然后用户将输入产品的详细信息。现在我想多次生成产品模型表单(取决于用户添加的产品数量)。我怎样才能做到这一点?
【问题讨论】:
-
我建议您查看 Northwind 数据库的 ERD,我认为它会帮助您可视化您需要的内容。有各种版本,但我认为这是原版。 ariacom.com/images/Northwind%20ERD.png
-
表单集,教程 - 所有这些都会有所帮助。关于您的模型的一些具体点: 1 - 您当前的设置实际上是订单主控 + 订单详细信息。它不允许重复使用产品 - 即,每个“产品”只是订单上的一行 - 您可能希望 Product 是实际产品和 LineItems 或 OrderDetail 或类似连接订单和产品的东西 - 基本设计问题取决于你想要做什么; 2 - 你有数量和总量,但没有单价;许多地方的 3 总计(和单价)需要小数而不是整数,但这取决于您的当地货币。
标签: python django database django-models django-forms