2013-12-12 66 views
2

我創建了Django 1.5 WebApp自定義User模型。它的工作原理。 :)Django 1.5多用戶認證或

我已經有另一個應用程序正在使用的第二個User2模型。這第二個User2模型不是Django應用程序,因此它使用不同的標準構建。它已經在許多用戶的生產中。

現在我需要同時給UserUser2登錄並做完全不同的事情。

我在考慮單個Django應用程序來管理一切,因爲在這兩種情況下,我需要使用兩種模式:登錄時User我還需要一些關於User2的信息,反之亦然。

我看不到合併User,User2的方法,因爲它們具有完全不同的字段。加User2有一個ForeignKey指向User

經過幾次試驗後,我發現django只支持一個AUTH_USER_MODEL。 所以現在我不知道如何繼續。

我看到下列選項:

  • 創建一個抽象的用戶模型(AbstractUser),然後子類UserUser2,但我不知道如何以及這是否會工作

  • 創建一個完全新的Django WebApp,但這需要更大的(也許是不必要的)努力

  • 找到另一種驗證方法User2,也許寫我的自定義授權代碼

您是否看到其他選項?哪個最好?

任何幫助,將不勝感激!

回答

1

我不確定我是否明白你的問題,但如果我做了,我認爲你要找的是OneToOneField

當我正在處理客戶想要自定義用戶的項目時,最好的解決方案之一是創建一個指向Django用戶的OneToOneField的新模型,如Profile模型。當你有一個User對象時,你可以做user.profile,你得到與用戶相關的配置文件(所以你可以做user.profile.any_profile_field)。

它去還其他方式,如果你有Profile你可以訪問到User對象像profile.user對象,做也profile.user.first_name

因此,如果您的問題非常適合,因爲我認爲,你應該改變您的型號爲OneToOneFieldUser像這樣:

class Profile(models.Model): 
    user = models.OneToOneField(User) 
    field1 = models.CharField.... 
    #  ... ...  ... 
    #  Your fields here 
+0

感謝您的回答!我最終創建了一個新的Django WebApp – user3096364