0

我试图了解,是否可以在django模型中继承常规的 python 类。这个想法是我需要模型和系统的另一部分(与 mongo 一起使用)的通用接口。

例子是:

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

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

从ModelmyC继承并使其抽象化对我来说是不可能的,甚至更多。所以我想知道,表格myM会是什么样子(如果我想要做的事情是可能的)。

4

1 回答 1

0

是的,您可以从常规类继承您的模型。例如,为您的模型创建一些 mixin。每次保存模型时,
此 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):
     ...

但是,如果您想为项目中的多个模型构建通用接口,抽象类解决方案会更好

于 2016-12-15T10:10:37.893 回答