2012-03-30 28 views
2

我看到他的頭銜似乎相似但不列入符合我的要求,我的用戶是非常不同的,所以只有不同的角色將可能不能很好的工作在stackoverflow.com另一個問題。我有一個工作門戶的場景,其中一種類型的用戶是具有不同屬性不同功能的公司,而其他候選人可以顯示其個人資料並恢復e.t.c.,他們將具有不同的URL。所以他們完全不同,但共同點是他們都是註冊用戶。他們將使用登錄表單,他們將更改密碼,我打算使用User類。什麼是更好的方式有多種類型的會員檔案在Django

我面臨的實際的問題是關於UserProfile類的用法。 UserProfile用於配置文件,但在我的情況下,這兩個用戶是完全不同的,並且在配置文件中需要很多不同的東西。我將來也可能會在系統中添加更多的用戶類型。雖然在Django,我們要談的輪廓是settings.py中添加這種單一的模式

AUTH_PROFILE_MODULE = ‘accounts.userprofile’ 

那麼,有沒有辦法通過使用Django的某種繼承或抽象類或一些其他的方式,這樣做到這一點我可以獲得預期的功能,並可以使用django Profiles

回答

2

編輯:好吧,經過進一步檢查,我以前的答案顯然是行不通的。

我曾提倡抽象UserProfile類。但是,如果你這樣做了,你不能實例化它,所以你又回到了原點。

但是,您可以使用多表繼承來實現你想要的。請參閱文檔中的this以及提供靈感的Quora thread

我之前發佈的代碼在很大程度上仍然不變,保存爲元亞類的排斥和抽象的變量。

class UserProfile(models.Model): 
    # Some Stuff 

class CompanyProfile(UserProfile): 
    # Some more stuff 

class CandidateProfile(UserProfile): 
    # Even more stuff 
+0

所以我將要在'AUTH_PROFILE_MODULE'設置settings.py中,使他們與'UserProfile'類交互等應用的Django使用這些個人資料類? – Hafiz 2012-03-30 19:28:59

+0

@Hafiz您可以設置UserProfile,然後在視圖中插入一些邏輯來處理不同的類型。但是請大幅編輯它,請重新閱讀我的答案。我原先提出的解決方案將*不*工作。新的應該。 – Todd 2012-03-30 19:33:14

+0

問題是,get_profile()將不起作用。 – alan 2012-03-30 19:37:47

相關問題