引用父模型的 table 创建 Django 抽象子模型
Create Django abstract child model refering to the table of the parent model
我有一个模型 (Parent
) 在第一个应用程序 (app1
) 的数据库 (table app1_parent
) 中有一个 table .
在另一个应用程序(app2
)中,我想为这个Parent
模型添加功能,但仍然参考现有的Parent
table(table app1_parent
),它是另一个应用程序的一部分 (app1
)。
如果我在 app2
中创建仅继承自 Parent
的 Child
模型,我最终会得到两个不同的 table:app1_parent
和app2_child
我想知道我是否可以创建一个(抽象的?)子模型 (Child
),它引用 Parent
模型的 table,而不添加额外的字段,但添加了新的方法和属性。
(基本上我想做与抽象 tables 已经建立的相反的事情)
class Parent(models.Model):
my_field = models.CharField(max_length=255)
class Child(Parent):
def my_method(self):
return 'done'
class Meta:
abstract = True
还有其他方法可以实现我的结果吗?
PS:当然objective不会修改app1.Parent
模型和app1.parent
table
OK,我终于找到了解决方案我自己的答案:使用Django代理模型实现单-table继承:
class Child(Parent):
def my_method(self):
return 'done'
class Meta:
proxy= True
关于如何扩展单table 继承以将子模型标识为父模型的“不同”以及它们之间的很好的答案:
我有一个模型 (Parent
) 在第一个应用程序 (app1
) 的数据库 (table app1_parent
) 中有一个 table .
在另一个应用程序(app2
)中,我想为这个Parent
模型添加功能,但仍然参考现有的Parent
table(table app1_parent
),它是另一个应用程序的一部分 (app1
)。
如果我在 app2
中创建仅继承自 Parent
的 Child
模型,我最终会得到两个不同的 table:app1_parent
和app2_child
我想知道我是否可以创建一个(抽象的?)子模型 (Child
),它引用 Parent
模型的 table,而不添加额外的字段,但添加了新的方法和属性。
(基本上我想做与抽象 tables 已经建立的相反的事情)
class Parent(models.Model):
my_field = models.CharField(max_length=255)
class Child(Parent):
def my_method(self):
return 'done'
class Meta:
abstract = True
还有其他方法可以实现我的结果吗?
PS:当然objective不会修改app1.Parent
模型和app1.parent
table
OK,我终于找到了解决方案我自己的答案:使用Django代理模型实现单-table继承:
class Child(Parent):
def my_method(self):
return 'done'
class Meta:
proxy= True
关于如何扩展单table 继承以将子模型标识为父模型的“不同”以及它们之间的很好的答案: