2017-07-13 8 views
-1

私はこのようなモデルを持つdjangoプロジェクトを持っています。djangoモデルの自動継承

class Part(models.Model): 
    attr1 = models.CharField(max_length=50) 
    attr2 = models.CharField(max_length=50) 

class Document(models.Model): 
    part = models.ForeignKey(Part) 
    attr1 = models.CharField(max_length=50) 

などとなる。
1つのモジュールには多くのモデルがあり、それぞれのモデルに対して、同じ属性と1つ以上の追加属性を持つ別々のモデルが必要です。
すべてのクラスを手作業で書くことなく、どうすればいいですか?


[OK]の質問が少し不明でした。
上記のようにモデルごとに2つの別々のテーブルをデータベースに入れたいと思います。

編集2
は私が私のmodels.pyの下部に

import inspect 
import sys 

for name, obj in inspect.getmembers(sys.modules[__name__]): 
    if inspect.isclass(obj) and issubclass(obj, models.Model) and hasattr(obj, 'Meta') and inspect.isclass(obj.Meta) and not (
       hasattr(obj.Meta, 'abstract') and obj.Meta.abstract): 
     globals()["Edit" + name] = type("Edit" + name, (obj,), {'fu': 'bar'}) 

を入れたときに、私は、それを得たと思うが、私は、このファイルにで定義された各モデルの新モデルを取得します。
EditPartEditDocumentクラスのそれぞれには、属性が fuのクラスがあります。

+0

それは研究を行うと私のために試してみて、私に金プラッタ上で答えを養うために他の人に尋ねるに最小限の労力を入れて、期待しても大丈夫ですか? –

答えて

0

あなたが継承できるabstract modelはどうですか?

class BaseModel(models.Model): 
    attr1 = models.CharField(max_length=50) 

    class Meta: 
     abstract = True 


class Part(BaseModel): 
    attr2 = models.CharField(max_length=50) 


class Document(BaseModel): 
    part = models.ForeignKey(Part) 
+0

私が探していたものではありませんが、私の質問は少し不明であることがわかりました。モデルPartとモデルsomethingPartが必要です。ここでsomethingPartはPartと同じですが、追加の属性があります。 –

+0

これを行うために抽象モデルを使用できませんか? – stephenmuss