gpt4 book ai didi

python - Django 中的多模型对象继承

转载 作者:行者123 更新时间:2023-11-30 00:03:17 25 4
gpt4 key购买 nike

在 django 中,我有三个模型:

class Base(models.Model):
pass

class ChildA(Base):
pass

class ChildB(Base):
pass

我使用的是 MySQL,因此在 syncdb 之后,我有三个表:

tb_basetb_childatb_childb,它们是 tb_childatb_childb 的主要部分code> 也是 tb_base 主键的外键。

从结构上讲,我可以拥有模型 BaseChildAChildB 的对象,这些对象具有 相同的 ID。

例如,现在我执行:

childa = ChildA.objects.create()
print(childa.pk) # printed: 1

上述代码在tb_basetb_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))
<小时/>

我的最终目的是在不同情况下使用 ChildAChildB 模型,但如果更新了基础部分字段,他们可以共享它。

此外,我想考虑删除对象时的行为。

最佳答案

我认为这没有多大意义,但你可以这样做:

childb = ChildB.objects.create(base_ptr_id=1))

您可能会考虑定义另一个类来保存 ChildA 和 ChildB 之间的共享数据。

from django.db import models


class SharedData(models.Model):
data = models.CharField("Data", max_length=50)


class Base(models.Model):
shared_data = models.ForeignKey(SharedData)


class ChildA(Base):
pass


class ChildB(Base):
pass

关于python - Django 中的多模型对象继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24836377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com