【问题标题】:Django subclass a third party app for User modelDjango 子类化用户模型的第三方应用程序
【发布时间】: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 在示例中没有被子类化。这就是问题所在,因为我希望它注册为 django User
  • 如果ThirdPartyClass 子类AbstractUser 你的类也将隐式子类化它。如果 ThirdPartyClass 没有子类化 AbstractUser,则在您的类中显式子类化它。
  • 原来我的例子不是AbstractUser的子类,但它是抽象类,这就是我被抛弃的地方。感谢您的帮助。

标签: django django-models django-users


【解决方案1】:

如果ThirdPartyClassAbstractUser 的子类,那么你已经完成了。

如果不是,则将其子类化到您自己的类中:

class GeneralUser(ThirdPartyClass, AbstractUser):
    # ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    相关资源
    最近更新 更多