gpt4 book ai didi

python - 不能使用继承 Django 模型的 Meta 类来配置继承抽象模型中定义的字段

转载 作者:太空狗 更新时间:2023-10-30 00:08:40 24 4
gpt4 key购买 nike

我想使用继承模型的 Meta 类的属性来配置在继承树更高层的抽象模型中定义的字段:

class NamedModel(models.Model):
class Meta:
abstract = True
verbose_name = 'object'

name = models.CharField("Name",
max_length=200,
db_index=True,
help_text="A meaningful name for this %s." % Meta.verbose_name)
# see what I'm trying to do here?
)
...

class OwnedModel(NamedModel):
class Meta(NamedModel.Meta):
verbose_name = 'owned object'

我希望 OwnedModel 表单的名称字段上的帮助文本显示“此拥有对象的有意义的名称”。 但事实并非如此:缺少“owned”一词,这表明在设置模型时使用了 NamedModel.Meta 中的 verbose_name,而不是 OwnedModel.Meta。

从继承的角度来看,这不是我所期望的:是否有某种方法可以创建字段,Meta.verbose_name 指的是非抽象模型类上的值,而不是抽象模型类上的值定义了哪个字段?

还是我傻了?

(这可能看起来像是一个微不足道的例子,但它确实是:但这只是为了说明我正在尝试做的更重要和更复杂的事情的意义)

非常感谢。

最佳答案

你为什么不尝试上一个类。

class BaseNamedModelMeta:
abstract = True
verbose_name = "your text"

然后像这样继承和覆盖你想要的任何东西:

class OwnedModel(NamedModel):
class Meta(BaseNamedModelMeta):
verbose_name = 'owned object'

关于python - 不能使用继承 Django 模型的 Meta 类来配置继承抽象模型中定义的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1361791/

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