我正在開發一個項目,我需要定義一些模型,這些模型具有一些與其中的業務邏輯相關的功能,例如,如何在從數據庫讀取數據時處理數據。如何繼承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() –