2016-06-23 7 views
0

現在、私は良いモデルの継承チュートリアルの記事を読んで、それは抽象基本クラスを使用する方法を示し、親から子に継承します。abstract = Falseの場合、データは親クラスを介して保存されますか?

class ConactInfo(models.Model): 
    name = models.CharField(max_length=100) 
    email = models.EmailField(max_length=100) 
    address = models.CharField(max_length=100) 

    class Meta: 
     abstract = True 

class Customer(ContactInfo): 
    purchase_history = models.ForeignKey('cart.Invoice') 

class Staff(ContactInfo): 
    bio = models.TextField() 
    position = models.CharField(max_length=20) 

著者は、データが顧客とスタッフモデルの代わりに、ContactInfo起因するabstract = Trueに格納されることを指摘する:ここでは記事の例があります。抽象がfalseに設定されている場合、結果が不思議です。データはContactInfoモデルに格納されますか、他の結果が発生しますか?

答えて

0

あなたは(Falseに設定するのと同じ)ConactInfoMetaクラスでabstractフィールドを設定しない場合は、この全体のセットアップはmultiple inheritanceと呼ばれます。

ただ、Pythonのサブクラスと同じように、それがために可能ですDjangoモデル に複数の親モデルから継承します。通常のPython 名前解決規則が適用されることに注意してください。特定の という名前(Metaなど)が表示される最初の基本クラスが使用されます。たとえば の場合、複数の親にMetaクラスが含まれている場合は、最初に のみが使用され、その他はすべて無視されます。

あなたはread moreこの変更は、あなたのDBとデータストレージにどのように影響するかを理解することができます。

関連する問題