【问题标题】:Need Modeling Help For An Ordering Form需要订购表格的建模帮助
【发布时间】:2013-01-03 21:16:26
【问题描述】:

我想为我公司的采购部门创建一个 Django 项目。这将是我在 Django 中的第一个项目,如果这只是初步的,很抱歉。工作流程如下所示:

用户注册帐户 > 登录 > 可以创建、编辑、查看或删除采购订单。

我被建模绊倒了。大概我可以使用 django.contrib.auth 创建和验证用户。此外,由于这主要是一个表单保存/打印应用程序,我将使用 ModelForm 根据我的模型生成表单,因为用户将对需要保存的表单数据进行更改。相关采购订单表的简化版本如下所示:

| Vendor | Date  | Lead Time | Arrival Date | Buyer_Name |
+--------+-------+-----------+--------------+------------+
| FooBar |1-1-12 | 30        | 2-1-12       | Mr. Bar    |
+--------+-------+-----------+--------------+------------+
+--------+-------+-----------+--------------+------------+
| SKU    | Description | Quantity | Price | Dimensions   |
+--------+-------------+----------+-------+--------------+
|12345   | Soft Bar    | 38       | 5.75  | 16 X 5 X 8   |
+--------+-------------+----------+-------+--------------+
|12346   | Hard Bar    | 12       | 5.75  | 16 X 5 X 8   |
+--------+-------------+----------+-------+--------------+
|12347   | Medium Bar  | 17       | 5.75  | 16 X 5 X 8   |
+--------+-------------+----------+-------+--------------+

如您所见,主采购订单表单有一个标题,其中标识了订购的供应商、当前日期、交货时间、到货日期以及填写表单的买家姓名。下面是三个不同 SKU 的逐行订单详细信息。理想情况下,每个 PurchaseOrder 应该能够添加许多 SKU。

模拟这样的东西的最佳方法是什么?我要创建用户、购买订单和 SKU 模型吗?然后将 FK 添加到指向 PurchaseOrder 模型的 PK 的 SKU 模型,或者是否有其他更正确的方法来做这样的事情?提前感谢您的帮助。

[编辑]

Django 拥有我一直在寻找的东西。由于这本质上是一个嵌套表单,因此我可以使用 Formsets。

这里有两个有用的开始链接:

https://docs.djangoproject.com/en/1.4/topics/forms/formsets/ https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/#model-formsets

【问题讨论】:

  • 此外,如果您想立即获得很多免费的东西,这不仅仅是一个宠物项目,而是您公司的工作产品,请尝试github.com/pinax/pinax-theme-bootstrap。小心不要学习 pinax 允许您跳过的基础知识。

标签: django django-models django-forms


【解决方案1】:

使用 django 的内置用户模型(您可以查看源代码以查看定义,但它类似于以下其他模型的代码)。除此之外,我会为您提到的每个对象建议一个模型。

不要将 FK 添加到 SKU 模型,因为 SKU 可以在不包含在采购订单中的情况下存在(如果我正确理解问题的话)。

models.py

​​>
from django.contrib.auth.models import User
class Vendor(models.Model):
     name = models.CharField(max_length=200)
     #other fields

class SKU(models.Model):
     description = models.CharField(max_length=200)
     #other fields

class PurchaseOrder(models.Model):
     purchaser = models.ForiegnKey(User)
     name = models.CharField(max_length=200)
     skus = models.ManyToManyField(SKU) #this is the magic that allows 1 purchase order to be filled with several SKUs
     #other fields

【讨论】:

  • SKU 仅存在于采购订单中。您认为我可以使用简单的 FK 将 SKU(许多)定义为采购订单(一个)吗?然后将 User 模型定义为与采购订单表的一对多?
  • 您认为我可以使用简单的 FK 将 SKU(许多)定义为采购订单(一个)吗?是的,如果没有采购订单就无法存在 SKU,但我所说的是这对我来说没有意义。我认为 SKU 存在并且它们被放置在 PurchaseOrder 中,所以这种关系会成立,但你比我更了解模型。我还编辑了关系以包含用户关系。我把它说成是 PurchaseOrder 对 User 有一个 FK,因为根据我的直觉,如果没有关联用户,PurchaseOrder 就不能存在。
猜你喜欢
  • 2012-07-04
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
相关资源
最近更新 更多