2017-01-25 20 views
1

在我的Django項目(這是一個REST API)我在這之前我還不能找到一個很好的解決它的任何地方可能已經遇到了問題。在我的項目中,我有兩種不同類型的用戶,「移動應用用戶」和「商業用戶」。移動應用用戶可以進入我們的移動應用,並根據地理位置查看他們周圍的內容。業務用戶可以登錄到Web管理員門戶並生成移動應用用戶可以看到的內容。作爲一個警告,商業用戶也可能是應用用戶。 我希望能夠讓業務用戶和應用用戶擁有相同的電子郵件,同時仍然保持其模型的唯一性。多AUTH_USER_MODEL在Django

現在問題是,它如何可以創建兩個賬戶(第一是移動應用程序&第二是企業)有相同的電子郵件ID ..

+0

你真的要創建兩個用戶記錄對於這種情況?組/權限可能是解決此問題的好方法 - https://docs.djangoproject.com/en/1.10/topics/auth/default/#permissions-and-authorization。 – user92454

+0

是的,我必須創建兩個記錄,因爲用戶信息可能會有所不同。我希望每種類型的用戶都有所不同。應該沒有關係。 –

回答

0

比方說,你的基本AUTH_USER_MODEL模型是用於存儲「移動應用用戶」 。 您應該添加存儲一些額外的信息,另一個型號爲「企業用戶」,它必須與該AUTH_USER_MODEL模型,僅此而已。

+0

在這種情況下,我們將如何創建兩個具有相同電子郵件ID的特殊帳戶(移動用戶和業務)? –

+0

組和權限的救援。 它的單調乏味,但你可以做一兩件事: 創建相關權限和組。例如,創建一個權限符合規範的企業用戶能夠訪問API和移動應用用戶的所有端點只能夠訪問的API.This方式移動應用程序相關的部分,你可以使用相同的驗證模型和控制行爲對於每個視圖中的每種類型的用戶,如果多個視圖的行爲有點類似,或者通過配置每個視圖的行爲不同,則基於用戶訪問它,通過使用Mixin。 –

+0

有趣的是,這個問題也解決了我的問題。 –

0

比方說,你有一個自定義User。然後

class MobileUser: 
    credentials = models.OneToOne(User, related_name='mobile_user') 
    ... 

class BusinessUser: 
    credentials = models.OneToOne(User, related_name='business_user') 
    ... 

您可以加入一些必要的字段的自定義User這可以讓你更好地控制訪問(如布爾is_businessis_mobile)。還使用rolespermissions