2017-05-25 66 views
-1

我需要你的幫助, 我在我的模型文件,3個不同種類的用戶(管理員,客戶,公司)的表,每個用戶可以有一個電子郵件和密碼進行身份驗證。問題是,當用戶在2個表中創建一個數,說客戶和公司,擁有相同的電子郵件,該程序混淆之間計數,給出了一個錯誤:瓶多用戶認證與多表

- class Admin(UserMixin, db.Model): 
- class Client(UserMixin, db.Model): 
- class Company(UserMixin, db.Model): 

你有關於這個問題的任何想法?

回答

1

好的,所以這是數據庫的設計缺陷。不同類型的用戶不應該存儲在不同的地方。

您需要定義一個模型,其中用戶的類型在數據庫中定義。然後,您可以在模型類中創建方法來評估用戶類並決定如何處理它。

實施例:

class User(db.Model): 
    id = db.Column(db.Integer, primary_key = True) 
    username = db.Column(db.String(200), unique = True) 
    password = db.Column(db.String(200)) 
    userType = db.Column(db.String(20), default = 'user') #can be user, client, admin or whatever your options are 

    def isAdmin(self): #an example method - your admin view could use this method to check if a user should be given access 
     if self.userType == 'admin': 
      return True 
     else: 
      return False