2

このような構造で複数のものを購入するための注文フォームを作成したいと思います。

Business Data 1
---Product A
---Product B
Business Data 2
---Product A

つまり、製品 A、B を販売したいのですが、その前に「ビジネス データ」オブジェクトに追加の集計データが必要です。あれは:

Business 1: Joe's Plumbing, located at ... ... ...
---Product A, standard ad appearing in category 3, with text "awesome plumbing"
---Product B, cooler ad appearing in category 9, with text "cheap plumbing"
Business 2: Joe's Burgers, located at ... ... ...
---Product A, standard ad appearing in category 4, with text "zzz"

または、モデルレベルから、次のようになります。

class Business(models.Model):
    name = models.CharField(max_length=255)
    address = models.MagicAddressField()

class Ad(models.Model):
    category = models.ForeignKey(Category)
    text = models.CharField(max_length=255)
    business = models.ForeignKey(Business)

今、ショッピング カートのバックエンド全体を再実装する代わりに、 Satchmoを使用したいと確信しています。しかし、私はこの種のことに頭を悩ませています。

Satchmo には製品の複数のオプションがあるように見えますが、それらはすべて「フラット」です。つまり、エンドユーザーが製品 A と製品 B を購入できるように Satchmo を簡単に取得できますが、データベースはビジネス 1 との接続を示しておらず、製品 A と B の両方でビジネス名などを繰り返す必要があります。

自分で作成する Business テーブルへの外部キーを持つために、satchmo が注文中に販売している最終的な「製品インスタンス」を取得できれば、おそらく自分のビュー/テンプレートでこれを回避できると思います。つまりAdのモデルをサッチモのカスタム製品のモデルにしたいというか…。

しかし、広告を次のように変更した場合:

class Ad(Product):
    objects = ProductManager()

    category = models.ForeignKey(Category)
    text = models.CharField(max_length=255)
    business = models.ForeignKey(Business)

これは間違ったセマンティクスではありませんか? それは、「これを購入すると、製品のインスタンスが事業 x を指している」という意味ではなく、「この製品タイプは事業 x に関連付けられている」という意味ではないですか?

私はここでかなり混乱しています:-/

4

1 に答える 1

0

これを正しく理解していれば、私はこのようなものを作るでしょう。

ビジネスと製品の間に多対多の関係を作成します。

class Business(models.Model):
    name = models.CharField(max_length=255)
    address = models.MagicAddressField()
    products = models.ManyToManyField(Product)

次に、カスタムフォームとテンプレート/ビューで、各ビジネスの製品/広告を含むフィールドセットを各ビジネスに追加できます。私が今見ている唯一の複雑さは、フォームに記入して送信した後、どの製品がどのビジネスを通じて購入されたかの情報を保存するために、カスタマイズされた「チェックアウトプロセス」も必要になることです...おそらくこれは製品オプション(?)を通じて行われますが、おそらく多くのカスタマイズ/シグナルの操作を意味するでしょう;-)しかし、これは正しい方向だと思います.

于 2012-03-09T10:48:15.337 に答える