django - Django 子模型不继承 Meta 内部类
问题描述
我有两个 Django 3.0 模型,其中一个是另一个的子类:
# models.py
class BaseCategory(models.Model):
class Meta:
verbose_name_plural = "categories"
class Category(BaseCategory):
# fields 'n' stuff
只有Category
模型在 Admin 中注册
# admin.py
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
# stuff here
在 Admin 中,Category
模型被标记为“Categorys”,尽管它应该继承了Meta
内部类及其verbose_name_plural
属性BaseCategory
。事实上,如果我将相同的代码复制到Category
模型中,
# models.py
class Category(BaseCategory):
class Meta:
verbose_name_plural = "categories"
# fields 'n' stuff
该模型在管理员中正确标记为“类别”。这表明该类Category
没有继承.Meta
BaseCategory
为什么子类不继承Meta
内部类?有没有另一种方法让我只指定verbose_name_plural
一次,而不是将完全相同的代码复制到 的每个孩子中BaseCategory
?
解决方案
根据Django Docs,您需要声明BaseCategory
模型抽象以便继承其 Meta 类。
class BaseCategory(models.Model):
class Meta:
abstract = True
verbose_name_plural = "categories"
然后Category
该类将自动继承Meta
该类,但abstract
属性除外。
请注意,如果您想对其中的Meta
类进行任何更改,Category
您需要明确地对其进行子类化:
class Category(BaseCategory):
class Meta(BaseCategory.Meta):
...
推荐阅读
- c# - 如果未在 WPF 中进行新的日期更改,则自定义 DatePicker 下拉菜单不会关闭
- angular - 默认路由模块与其他所有模块一起加载
- php - 加载视图中的变量
- reactjs - React re-write componentWillReceiveProps in useEffect
- javascript - 如何区分数组对象的差异?
- r - 我的 R 函数返回
在计算列而不是数字中。我该如何解决? - ruby-on-rails - 下载带有 ruby-on-rails 的 PDF 文件,错误消息
- css - 反应可折叠面板css问题
- javascript - JavaScript 中的变量超过 1 个 URL
- r - R中具有空间自相关的GAMM