2016-12-15 17 views
0

djangoモデルで通常のPythonクラスを継承することができるかどうかを理解しようとしています。私は、モデルと、システムの別の部分(モンゴーで動作する)のための共通のインターフェースが必要であるという考えです。DjangoモデルでPythonオブジェクトを継承する

例は次のとおりです。

class myC(object): 
    def __init__(self): 
    self.f = "test" 

class myM(myC, models.Model): 
    name = models.CharField(max_length=50) 

モデルからmyC継承を作成し、それを抽象することは、私にとって、さらに実際には不可能です。だから、myMのテーブルはどうなるか(私がしようとしていることが可能な場合)はどうだろうか。

答えて

0

はい、通常のクラスからモデルを継承できます。たとえば、あなたのモデルにいくつかのミックスインを作成します。
このミックスインは、/urlにフィールドにあなたがモデルを保存するたびに不足している追加します。

class ModelURLSaveMixin(object): 

    def save(self, *args, **kwargs): 
     if not self.url.startswith('/'): 
      self.url = '/' + self.url 
     if not self.url.endswith('/'): 
      self.url = self.url + '/' 
     super(ModelURLSaveMixin, self).save(*args, **kwargs) 


class MyModelWithUrlField(ModelURLSaveMixin, models.Model): 
    ... 

をしかし、あなたはあなたのプロジェクトにいくつかのモデルのための共通インターフェイスを構築したい場合は、抽象クラスのソリューションは、

良くなります
関連する問題