我有一個模型(Parent),在第一個應用程式(app1)中的資料庫中有一個表(表app1_parent)。
在另一個應用程式(app2)中,我想為這個Parent模型添加功能,但仍然參考現有的Parent表(表app1_parent),它是另一個應用程式(app1)的一部分。
如果我在app2中創建了簡單地繼承自Parent的Child模型,我最終會得到兩個不同的表。app1_parent和app2_child
我想知道我是否可以創建一個(抽象的?)子模型(Child)來參考Parent模型的表,而不添加額外的欄位,但添加新的方法和屬性。
(基本上,我想做的是與抽象表所要做的相反的事情)
。
class Parent(models.Model) 。
my_field = models.CharField(max_length=255)
class Child(Parent)。
def my_method(self):
回傳 "完成"。
class Meta:
abstract = True
是否有其他方法來實作我的結果?
PS: 當然,目標是不要修改app1.Parent模型和app1.parent表
uj5u.com熱心網友回復:
好吧,我終于找到了一個我自己的答案:使用Django代理模型來實作單表繼承:
class Child(Parent)。
def my_method(self)。
return 'done'.
class Meta:
proxy= True Meta.
關于如何擴展單表繼承以使子模型被識別為父模型的 "不同",以及它們之間的關系的非常好的答案。https://stackoverflow.com/a/60894618/12505071
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/320084.html
標籤:
上一篇:為什么在Python的派生類中,super().__init__()的行為與super().override()的行為不同?
下一篇:每個子類中的靜態恒定變數
