5

「記事、ビデオ、ブログ投稿、ニュース、商品」といういくつかのモデルがあります。それぞれが独自のアプリケーションにあります。

それらはすべて基本的に同じモデルで、それぞれにいくつかの追加フィールドがあります。ただし、それぞれが約 15 のフィールドを共有します。私は抽象基本クラスを使用しています。そのための組織をどのようにすべきかを理解しようとしています。私の現在のセットアップは次のようなものです:

apps/
    abstract_models.py
    abstract_templatetags.py
    abstract_forms.py
    articles/
        models.py
        ...
    videos/
        models.py
        ...
    blogs/
    ...

これが良い方法ではないことはわかっていますが、共有されているすべての情報をどこに置くべきかわかりません。私はこのようにして、アプリごとにフォームまたはモデルをサブクラス化し、ローカルに変更を加えました。それらは全体像に対するほんのわずかな変更であるため、抽象クラスが進むべき道だと思いますが、間違っている可能性があります。

それらは非常に多くの構造を共有していますが、明らかな理由から、それらを別々のアプリにしたいと考えています。でも、もう少しすっきりさせたい。

どんな考えでも大歓迎です。

4

3 に答える 3

5

さまざまなプロジェクトで使用できるアプリをセットアップし、それをtools. プロジェクト全体で再利用し、tools必要に応じてインポートする傾向がある基本的な基本モデルがあります。

たとえば、作成時間と変更時間、および作成と変更を行ったユーザーのフィールドを追加する があります CreatedModifiedModeltools/models.py

一度定義した後は、次のように簡単に実行できます。

from tools.models import CreatedModifiedModel    

class Widget(CreatedModifiedModel):
    # comes with my four fields automatically

baseor coreorという単一のアプリを作成し、toolsそこにすべての抽象クラスを配置して、クリーンな状態に保ち、将来再利用できるようにすることができます。

于 2009-10-13T11:33:33.713 に答える
2

Pinax プロジェクトには、グループに似たものがあります。基本クラスと、それをアプリケーションに拡張するクラスを作成しました。

/apps
    /group
        base.py
        ...
    /projects
        models.py
        ...

それを整理するのは素晴らしいことのようです。ソースコードは github で見ることができます。

于 2009-10-13T06:53:17.067 に答える