2017-05-25 5 views
-1

私のモデルファイルには、3種類のユーザ(管理者、クライアント、会社)の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 
関連する問題