继承Django模型中的python对象
问题描述:
我试图理解,如果可以在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
的表格会是什么样子(如果我想要做的事情是可能的)。
答
是的,你可以从普通班级继承你的模特。例如,为您的模型创建一些混合。
这混入将添加缺少的/
到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):
...
但如果你想建立通用接口,用于项目的几种模式的抽象类的解决方案会更好