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