1

我想为我公司的采购部门创建一个 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

4

1 回答 1

0

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

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

模型.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
于 2013-01-03T22:08:29.373 回答