django - 如何创建代表电子表格的模型?
问题描述
我正在尝试构建一个表格样式的应用程序,以允许跟踪可以添加到品牌网站的电子表格中的项目。如果使用电子表格,我的表格将如下所示:
顾客姓名 | 客户地址 | 制片人 |
---|---|---|
标记 | 主街 233 号 | 格雷格 |
公司 | 订购日期 | 代表 | 接收日期 | 成本 | 报价单号 |
---|---|---|---|---|---|
一个 | 21 年 7 月 20 日 | 约翰 | 21 年 7 月 25 日 | 500 | JDHP |
乙 | 21 年 7 月 20 日 | 玛丽 | |||
C | 21 年 7 月 23 日 | 约翰 | 21 年 7 月 25 日 | 1500 | 584D |
D | 21 年 7 月 18 日 | 玛丽 | 21 年 7 月 22 日 | 400 | J5HP |
实际上,这个想法是我有一个模型来容纳每个客户的不同报价。我有 2 类公司(公共和私人),每个都会被跟踪,所以我设想一个包含这三种小表格(客户信息、私人公司报价和上市公司报价)的大型表格。无论我们是否与他们联系以获得报价,我都会在每张表中包括每家公司,以便我们知道如果客户要求更多报价,哪些选项仍然可用。
我一直在将 django 表单集视为一种可能的选择,但并不完全了解它们是如何工作的。我观看了一些教程并通读了文档,但似乎这些只是在表格中所有完整的输入之后添加一个空白输入。这是对表单集如何工作的正确解释吗?或者他们会有效地允许我在一个更大的表单中嵌套多个表单吗?其次是我将如何实现这个模型?我为列表中的每家公司尝试了 company_date_ordered、company_rep、company_date_received 等,但出现了很多冲突错误。
解决方案
欢迎来到网络开发。
几点:
- 有人说,“应用程序像鱼一样老,数据像酒一样老” ——这意味着最好将注意力集中在数据模型上,而不是关注应用程序代码本身
- 电子表格本身就是表格 - 这意味着您不会构建表示电子表格的模型,而是构建表示电子表格的一行(对象)或每行的元素(对象)的模型
话虽如此,鉴于您的示例,让我们考虑一下我们正在使用哪些对象:
- 您的第一个“电子表格”看起来可能是 a
Customer
和Producer
表格的组合 - 对于此示例,我们将其简化为仅Customer
包含该字段的表格producer
- 您的第二个电子表格有点复杂,它似乎 join
Company
,类似于 anOrder
并且可能是 aRepresentative
(甚至可能更多) - 让我们将其分解为每个部分:
模型.py
class Customer(models.Model):
"""
this is a simple model that represents a customer,
it doesn't have any relations to other tables
"""
name = models.CharField(...)
address = models.CharField(...)
producer = models.CharField(...)
class Order(models.Model):
"""
this table represents orders,
it will have relations to other tables, add them as needed
"""
# fields:
date_ordered = models.DateField(...)
date_received = models.DateField(...)
quote_number = models.CharField(...)
"""
an Order can only be associated to one Company
but a Company can have many Orders
therefore we will use a ForeignKey
the same goes for Representative
"""
# relations:
company = models.ForeignKey("Company", ..., related_name = "orders")
representative = models.ForeignKey(...)
class Company(models.Model):
"""
this model represents a Company
its related to Orders,
but the relation is defined on the Orders table
"""
name = models.CharField(...)
class Representative(models.Model):
...
花一些时间思考您的实体是什么以及它们如何相互关联。一旦您的数据结构形成良好,您就可以开始构建界面供用户查看、编辑和添加到您的表格 - 表单是一个很好的开始方式,但它们肯定不是唯一的选择。祝你好运!
推荐阅读
- xcode - 归档时未找到 Xcode 自定义框架
- python - 从丝芙兰网站上的href中抓取链接
- java - 并行 Spark 运行似乎没有使用正确的对象映射
- excel - Worksheet_SelectionChange 如果条件为假,则返回错误
- java - 如何在 Java 中使用具有原始类型(int、float、double、char ...)的 Class.forName() 方法
- r - dplyr::mutate() return "Ops.factor(gene_id$symbol, x) 中的错误:因子的水平集不同"
- google-oauth - 在 google OAuth 中获取自定义用户字段
- javascript - 为什么我的表单不会向数据库提交用户信息?
- swift - 如何在 SwiftUI macOS 中创建第一响应者
- routing - 在Angular 9项目的页面之间导航时,我正在努力寻找关于滚动的解决方案