2015-06-03 144 views
1

我有一個層次結構,可以有一個公司和一個用戶,一個公司可以嵌套在另一個公司中,而用戶可以是獨立的或屬於公司。 是否有關於如何將django用戶模型與django-mptt包結合使用的文檔?使用Django-mppt擴展django用戶模型

回答

1

Django documentation: Customizing authentication in Django建議下列選項:

有延長兩種方式默認用戶模型,而不用替換你自己的模型。如果您需要的更改是純粹的行爲,並且不需要對存儲在數據庫中的內容進行任何更改,則可以基於用戶創建代理模型。這允許代理模型提供的任何功能,包括默認排序,自定義管理器或自定義模型方法。

如果您希望存儲與用戶相關的信息,則可以使用包含字段的模型的一對一關係以獲取其他信息。這種一對一模式通常稱爲配置文件模型,因爲它可能存儲有關站點用戶的非auth相關信息。

有些類型的項目有認證要求其Django的內置的用戶模型並不總是合適的。例如,在一些網站上,使用電子郵件地址作爲您的身份標記而不是用戶名更有意義。

以上兩者都可能繼承MPTTModel並解決您的問題。我個人建議第一種方法比較簡單,對我來說這聽起來足以描述你所描述的內容,但這又取決於你的特定未來要求。

1

我認爲你所描述的實際上是兩個不同的問題。 您的公司模型需要分層,但這並不意味着用戶模型也需要一致。 你可能會有:

class Company(<mpttmodel>): 
    pass 

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

否則,如果YourUser爲繼承FRM MPTT模式,你將有你的用戶模型分層,而不是公司的模式。