3

Django で以下のような仮想フィールドを持つモデルを設計する場合、最もエレガントなアプローチについてお聞きしたいと思います...

オンラインストアを構築していて、システム内のすべての製品がモデル「 Product 」によって定義されているとしましょう。

class Product(models.Model):
    # common fields that all products share
    name = ...
    brand = ...
    price = ...    

しかし、ストアには互いにまったく関係のない多くの製品タイプがあるため、さまざまな製品タイプ (MP3 プレーヤーの容量、本のページ数など) の仮想フィールドを格納する何らかの方法が必要です。

私が Django の生のスキルで思いついた解決策は、これまでのところ完全にはほど遠いものです。

  • 手動で管理する「custom_fields」プロパティと中間テーブルがあります。(私の顔に醜い叫び声を上げます:))

  • または、Python の危険な exec-eval ステートメントを使用して、その場で " Product "からクラスを継承します(これは、メンテナンスと実装にはあまりにも多くのブードゥー教の魔法であり、Django 内部の知識が必要になります)。

これについてどう思いますか?

ティア。

4

4 に答える 4

3

Ruby on Rails には、辞書をテキスト フィールドにパックできる "serialized" フィールドがあります。おそらく DJango は似たようなものを提供していますか?

この記事には、SerializedDataField の実装があります。

于 2009-02-26T15:09:48.090 に答える
0

継承してください。独自の追加フィールドを使用してProduceサブクラスを作成します。

于 2009-02-27T20:43:55.610 に答える