2017-02-08 1 views
1

私はDjangoを学び、最初の半複合モデルを書いています。私のテーブルの多くは、同様のビュースタイルを念頭に置いて作られているので、多くのオブジェクトには名前、説明、イメージがあります。例:名前、説明、およびURLは(それ以外は全く異なっている)多くのオブジェクトに共通となりますので単純なコードの再利用にDjangoの抽象クラスを使用するのが適切ですか?

class Ingredient(models.Model): 
    # Standard to many classes 
    name = models.CharField(max_length=50) 
    description = models.TextField() 
    image_url = models.URLField(max_length=200) 

    # Unique to this class 
    foodgroup = ..... etc. 

、私はそれぞれが継承できる基本クラスを定義し検討していたから:

class BaseObjectWithImage(models.Model): 
    # Standard to many classes 
    name = models.CharField(max_length=50) 
    description = models.TextField() 
    image_url = models.URLField(max_length=200) 

    class Meta: 
     abstract = True 

class Ingredient(BaseObjectWithImage):   
    # Unique to this class 
    foodgroup = ..... etc. 

マイ質問は、簡単なOOPベストプラクティスの質問に近いかもしれませんが、これはDjangoの抽象クラスの愚かな使用かどうか、あるいは3xN行のコードを取り除き、ほとんどのモデルクラスをジェネリック型として扱うことができるかどうかです。

答えて

1

abstactクラスの愚かな使用ではありません。 DjangoとPythonはどちらも、多種多様なプログラミングスタイル(あなたに最も適したもの)を使用できるという点で、比較的多角的です。モデルが繰り返し列の独自のコピーを持つ個々のテーブルを作成するかどうか、またはそれぞれが共通基本テーブルへのForeignKeyを含むかどうかについて、一貫性のある意識的な決定を下していることを確認してください。

関連する問題