2016-12-15 189 views
0

我試圖理解,如果可以在django模型中繼承常規python類。這個想法是我需要一個模型和系統的另一部分(與mongo一起工作)的通用接口。繼承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): 
    ... 

但如果你想建立通用接口,用於項目的幾種模式的抽象類的解決方案會更好