【发布时间】:2013-06-02 07:50:46
【问题描述】:
假设我有一些第三方应用程序想要子类化,我们称之为ThirdPartyClass。我想对此进行子类化以创建一个普通用户,然后可以灵活地将普通用户子类化为更具体的用户。它看起来像这样:
models.py
class GeneralUser(ThirdPartyClass):
user = models.OneToOneField(
settings.AUTH_USER_MODEL)
# general fields would go here
class SpecificUser(GeneralUser):
# specific fields would go here
显然,这不起作用,因为我想继承 AbstractUser?也许这甚至不是解决这个问题的正确方法。有解决办法吗?
旁注:我想到的第三方应用程序可以找到here。无论如何,希望这个答案可以在没有第三方应用程序细节的情况下解决,但如果没有其他选择,那么完成工作的任何事情都是可以接受的! 谢谢!
【问题讨论】:
-
我不明白你的问题。首先,不清楚这是否行不通,因为我相信 OOP 中的 继承 确实 起作用。为什么要在派生类中重新定义
user字段? -
我并不是要在派生类中重新定义
user字段,而是对其进行了编辑和修复。我知道这个继承模型会起作用,但AbstractUser在示例中没有被子类化。这就是问题所在,因为我希望它注册为 djangoUser。 -
如果
ThirdPartyClass子类AbstractUser你的类也将隐式子类化它。如果ThirdPartyClass没有子类化AbstractUser,则在您的类中显式子类化它。 -
原来我的例子不是
AbstractUser的子类,但它是抽象类,这就是我被抛弃的地方。感谢您的帮助。
标签: django django-models django-users