无法从超类访问 Django 模型的子类
Posted
技术标签:
【中文标题】无法从超类访问 Django 模型的子类【英文标题】:Subclass of Django Model Not Accessible from Superclass 【发布时间】:2015-08-27 19:21:16 【问题描述】:我正在尝试在 Django 中创建一个继承模型,如下所示。我应该能够调用,例如 superclass= Superclass(),我应该能够调用 superclass.subclass,并访问必要的字段。当我这样做时,我被告知“预期有 1 个参数,给出了 8 个参数”:知道我哪里出错了吗?
class Superclass(models.Model):
pass
class Subclass(Superclass):
def __init__(self):
super(Subclass, self).__init__()
【问题讨论】:
您的 super 调用也不起作用,因为您只能将类用作 super 的第一个参数。 IE。super(Subclass, self)
不是 super(Group, self)
是的 - 这是问题中的错误,但不是问题。
另外,无论如何你都无法做到superclass.subclass
- 继承是一种“is-a”关系,而不是“has-a”。
【参考方案1】:
这里的问题是子类构造函数和超类构造函数中需要*args
和**kwargs
。这两个字段将接受参数和对象:其中包括超类的字段信息以及对象管理器等。这应该可以解决问题:
class Subclass(Superclass):
def __init__(self, *args, **kwargs):
super(Subclass, self).__init__(*args, **kwargs)
【讨论】:
以上是关于无法从超类访问 Django 模型的子类的主要内容,如果未能解决你的问题,请参考以下文章