gpt4 book ai didi

Django OneToOneField 到多个模型

转载 作者:行者123 更新时间:2023-12-05 01:04:10 25 4
gpt4 key购买 nike

假设我们有一个基本模型:

class BaseModel(models.Model):
pass

有一些子类:
class Submodel1(BaseModel):
some_field = models.TextField()

...

class Submodel9(BaseModel):
another_field = models.TextField()

每个子模型都在其自己的 Django 应用程序中定义。可以出现带有新子模型的新应用程序。

我们还有另一个模型,我们称之为 RelatedModel ,它应该与 BaseModel 具有一对一的关系:
class RelatedModel(models.Model):
the_thing = models.OneToOneField(BaseModel, null=True, blank=True)

如果 BaseModel.Meta.abstract == True 是否可以定义这样的关系? ?
或者不定义 BaseModel根本?

我在下面发布了一些解决方案作为答案,但对我来说它们似乎有点难看。

最佳答案

https://stackoverflow.com/a/23547494/517316

而不是将关系置于 RelatedModel ,可以把它放到Submodel1 .. Submodel9 .

class Submodel1(models.Model):
some_field = models.TextField()
related_model = models.OneToOneField(RelatedModel,
null=True, blank=True,
related_name='the_thing')

...

class Submodel9(models.Model):
another_field = models.TextField()
related_model = models.OneToOneField(RelatedModel,
null=True, blank=True,
related_name='the_thing')

或者,如果我们制作 BaseModel抽象,我们可以在 BaseModel 中定义它:
class BaseModel(models.Model)
related_model = models.OneToOneField(RelatedModel,
null=True, blank=True,
related_name='the_thing')

class Meta:
abstract = True

这将允许访问 SubmodelX来自 RelatedModel 的实例使用名为 the_thing 的字段,就像在多表继承示例中一样。

关于Django OneToOneField 到多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555478/

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