我试图理解,如果可以继承django
模型中的常规python类。我的想法是,我需要一个通用的接口,用于模型和系统的另一部分(与mongo一起使用)。
示例是:
class myC(object):
def __init__(self):
self.f = "test"
class myM(myC, models.Model):
name = models.CharField(max_length=50)
让myC
从模型继承并使其成为抽象对我来说真的不可能,甚至更多。所以我想知道,myM
的表格会是什么样的(如果我想做的话是可能的话)。
答案 0 :(得分:0)
是的,您可以从常规课程继承您的模型。例如,为您的模型创建一些mixins
每次保存模型时,此mixin都会将/
字段添加到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):
...
但是如果你想为你的项目中的几个模型构建通用接口,那么抽象类解决方案会更好