使用Django-mppt扩展django用户模型

时间:2015-06-03 10:02:36

标签: django hierarchical-data django-users django-mptt

我有一个层次结构,意思是可以有公司和用户,公司可以嵌套在另一家公司,而用户可以独立或属于公司。 是否有关于如何将django用户模型与django-mptt包一起使用的文档?

2 个答案:

答案 0 :(得分:1)

Django documentation: Customizing authentication in Django建议使用以下选项:

  

有两种方法可以扩展默认用户模型而无需替换您自己的模型。如果您需要的更改纯粹是行为,并且不需要对数据库中存储的内容进行任何更改,则可以基于User创建代理模型。这允许代理模型提供的任何功能,包括默认排序,自定义管理器或自定义模型方法。

     

如果您希望存储与用户相关的信息,您可以使用与包含这些字段的模型的一对一关系以获取其他信息。这种一对一模型通常称为配置文件模型,因为它可能存储有关站点用户的非身份验证相关信息。

  

某些类型的项目可能具有Django的内置用户模型并不总是适用的身份验证要求。例如,在某些网站上,使用电子邮件地址作为您的身份识别令牌而不是用户名更为合理。

以上两者都可以继承MPTTModel并解决您的问题。我个人会建议第一种方法更简单,听起来对你所描述的内容就足够了,但这又取决于你未来的特定要求。

答案 1 :(得分:1)

我认为你所描述的实际上是两个不同的问题。 您的公司模型需要是分层的,但这并不意味着用户模型也需要。 你可能会:

class Company(<mpttmodel>):
    pass

class YourUser(User):
    company = models.ForeignKey(null=True)

否则,如果YourUser继承frm mptt模型,您将使用户模型分层而不是公司模型。