我正在开发一个项目,我需要定义一些模型,这些模型具有一些与其中的业务逻辑相关的功能,例如,如何在从数据库读取数据时处理数据。如何继承django模型只是为了覆盖函数?
我想从同一个父模型继承多个模型,在每个模型中我重写了一些特定的函数。我不希望为每个新模型创建一个新表,因为我只重写功能而不添加任何字段。如何实现这一目标?
代理模型没有帮助,因为我无法从数据库对象中检索相应的类。
例子: -
class ParentModel(models.Model):
f1=fields.IntegerField()
def processing_func1(self):
<default func1 functionality>
def processing_func2(self):
<default func2 functionality>
class ChildModel1(models.Model):
def processing_func1(self):
<overridden func1 functionality>
class ChildModel2(models.Model):
def processing_func2(self):
<overridden func2 functionality>
我需要孩子的模型是通过ParentModel访问。例如,如果我做ParentModel.objects.all()我得到ChildModels的对象。对于正常的模型继承,我使用django-model-utils来实现。
你是什么意思'无法从数据库对象中检索合适的类?如果将ChildModels定义为代理,则可以使用数据库,因为它是父级模型。代理模型正好适合您的情况。 – Raz
https://docs.djangoproject.com/en/1.10/topics/db/models/#proxy-models – abrunet
我需要通过ParentModel访问子模型。例如,如果我做ParentModel.objects.all()我得到ChildModels的对象。对于正常的模型继承,我通过说ParentModel.object.select_subclasses() –