2016-12-15 91 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): 
    ... 

但如果你想建立通用接口,用于项目的几种模式的抽象类的解决方案会更好