【发布时间】:2014-07-19 03:16:14
【问题描述】:
在 django 中,我有三个模型:
class Base(models.Model):
pass
class ChildA(Base):
pass
class ChildB(Base):
pass
我使用的是 MySQL,所以在syncdb 之后,我有三个表:
tb_base、tb_childa和tb_childb,tb_childa和tb_childb的主键也是tb_base主键的外键。
从结构上讲,我可以拥有 Model Base、ChildA 和 ChildB 的对象
相同的ID。
例如,现在我执行:
childa = ChildA.objects.create()
print(childa.pk) # printed: 1
以上代码在tb_base和tb_childa中添加了一行,主键id为
1.
现在我想创建一个ChildB 实例,但它共享childa 的基础对象。
例如:
# this doesn't work, but shows what I want to do.
childb = ChildB.objects.create(base=Base.objects.get(pk=1))
我的最终目的是在不同的情况下使用ChildA 和ChildB 模型,但是如果更新了基础部分字段,他们可以共享它。
另外,我想考虑删除对象时的行为。
【问题讨论】:
-
想想当你继承时不需要创建一个 childb 对象,因为创建了一个基 1 的主键,两个类都有相同的 1 为什么要创建一个新的