2017-08-23 4 views
0

私はModelクラスを初期化する方法を見つけることができません...のpython3フラスコモデルクラスのInit

# Define mongoengine documents 
class User(db.Document, UserMixin): 
    name = db.StringField(max_length=75,primary_key=True) 
    email = db.EmailField(max_length=255,unique=True,required=True) 
    password = db.StringField() 
    created_on = db.DateTimeField(
     default=datetime.datetime.now, required=True 
    ) 
    isActive = db.BooleanField(default=True) 
    isAuthenticated = db.BooleanField(default=False) 
    isAdmin = db.BooleanField(default=False, required=False) 

    meta = {'collection': 'users'} 

    def __init__(self,name,email,password,created_on,isActive=True,isAuthenticated=False,isAdmin=False): 
     self.name=name 
     self.email=email 
     self.password = bcrypt.generate_password_hash(
      password, app.config.get('BCRYPT_LOG_ROUNDS') 
     ).decode('utf-8') 
     self.created_on==datetime.datetime.now() 
     self.isActive = isActive 
     self.isAuthenticated = isAuthenticated 
     self.isAdmin = isAdmin 

私は次のエラーを取得する:

TypeError: __init__() missing 4 required positional arguments: 'name', 'email', 'password', and 'created_on'

私はわからないんだけど私が見逃しているのは、構文が正しいようです。

私はのinit機能

これが問題ののpython3 Python2対一種であるを削除すると、モデルが(無塩パスワードで)動作しますか?

完全トレースバック:[https://gist.github.com/642ad5c9d86a3bb8da70757636424209]

+2

エラーメッセージだけでなく、トレースバック全体を投稿してください。 [mcve]を参照してください。エラーは非常に簡単です:あなたはこれらの4つの引数を渡さずにインスタンスを作成しています。 – davidism

+0

これらをオプションにしたい場合は、isAdminなどのようにNoneにデフォルト設定する必要があります –

+0

これをこれらのパラメータに追加することもできます(name = ""、email = ""、password = ""、created_on =なし) –

答えて

1

私はあなたがrequired

TypeError: __init__() missing 4 required positional arguments: 'name', 'email', 'password', and 'created_on'

として、これらの4つの引数をもらえてきたので、あなたはおそらくuser = User(name="Abc",email="[email protected]", password="password!",created_on=datetime.datetime.now())を行う必要があり、あなたが代わりにuser = User()としてモデルオブジェクトを作成していると仮定あなたがどのようにユーザーを作成しているのかでOPを更新してくださいobj