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   |
+--------+-------------+----------+-------+--------------+

ご覧のとおり、メインの注文書フォームには、注文元のベンダー、現在の日付、リード タイム、到着日、およびフォームに記入している購入者の名前を識別するヘッダーがあります。その下には、3 つの異なる SKU の明細ごとの注文の詳細があります。理想的には、各 PurchaseOrder に多くの SKU を追加できるようにする必要があります。

このようなものをモデル化する最良の方法は何ですか? ユーザー、購入注文、および SKU モデルを作成する必要がありますか? 次に、PurchaseOrder モデルの PK を指す SKU モデルに FK を追加しますか、それとも、このようなことを行うより正しい方法が他にありますか? 助けてくれてありがとう。

[編集]

Django には、私がずっと探していたものがありました。これは本質的にネストされたフォームであるため、フォームセットを利用できます。

開始するのに役立つ 2 つのリンクを次に示します。

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 の組み込みユーザー モデルを使用します (ソースを参照して定義を確認できますが、これらの他のモデルのコードは以下のようになります)。それ以外は、あなたが言及したすべてのオブジェクトのモデルを提案します。

SKU モデルに FK を追加しないでください。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
于 2013-01-03T22:08:29.373 に答える