Я работаю над модификацией приложения cookiecutter Flask.TypeError при добавлении задачи скрипта фляги
В административном модуле manage.py на основе флеш-скрипта я пытаюсь создать новую задачу «create_admin», которая добавляет пользователя администратора.
@manager.command
def create_admin():
"""Creates the admin user."""
db.session.add(User(
email="[email protected]",
password="admin",
admin=True,
confirmed=True,
confirmed_on=datetime.datetime.now()
)
)
db.session.commit()
Я добавил его в конце списка, как вы можете увидеть:
manager.add_command('server', Server())
manager.add_command('shell', Shell(make_context=_make_context))
manager.add_command('db', MigrateCommand)
manager.add_command("urls", ShowUrls())
manager.add_command("clean", Clean())
manager.add_command("create_admin", create_admin())
У меня есть модель «пользователь», который выглядит так:
class User(UserMixin, SurrogatePK, Model):
__tablename__ = 'users'
username = Column(db.String(80), unique=True, nullable=True)
email = Column(db.String(80), unique=True, nullable=False)
#: The hashed password
password = Column(db.String(128), nullable=True)
created_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)
first_name = Column(db.String(30), nullable=True)
last_name = Column(db.String(30), nullable=True)
active = Column(db.Boolean(), default=False)
is_admin = Column(db.Boolean(), default=False)
confirmed = db.Column(db.Boolean, default=False)
confirmed_on = db.Column(db.DateTime, nullable=True)
def __init__(self, username, email, password=None, **kwargs):
db.Model.__init__(self, username, email=email, **kwargs)
if password:
self.set_password(password)
else:
self.password = None
Когда я попробуйте запустить новую функцию:
$ python manage.py create_admin
Traceback (most recent call last):
File "manage.py", line 57, in <module>
manager.add_command("create_admin", create_admin())
File "manage.py", line 46, in create_admin
confirmed_on=datetime.datetime.now()
TypeError: __init__() takes at least 3 arguments (3 given)
(flask_mini)
какой я doi Неправильно?
редактировать:
File "C:\envs\r2\myflaskapp\myflaskapp\models\user.py", line 31, in __init__
db.Model.__init__(self, username=username, email=email, **kwargs)
File "c:\envs\virtalenvs\flask_mini\lib\site-packages\sqlalchemy\ext\declarative\base.py", line 525, in _declarative_constructor
(k, cls_.__name__))
TypeError: 'admin' is an invalid keyword argument for User
Спасибо, когда я запускаю это я получаю: db.Model .__ INIT __ (я, имя пользователя, адрес электронной почты = адрес электронной почты * * kwargs) ТипError: _declarative_constructor() принимает ровно 1 аргумент (6 данных) – user61629
@ user61629: Я подозреваю, что модель SQLAlchemy не принимает позиционные аргументы. Передайте аргументы как ключевые слова аргументы * only *: 'db.Model .__ init __ (self, username = username, email = email, ** kwargs)' –
Еще раз спасибо за просмотр, пожалуйста, см. Выше. – user61629