【发布时间】:2017-02-04 19:38:05
【问题描述】:
我了解需要为这种情况提供 default='value'。我已经咨询过 StackOverFlow 的解决方案,但无法摆脱这个错误。无论有没有默认值,我在从管理表单保存时都会收到此错误。错误在初始化函数的 Packeges 模块中。请指教。 以下是我的代码:
class Packeges(db.Model):
__tablename__ = 'packages'
id = db.Column(db.Integer, primary_key=True)
package_name = db.Column(db.String(30), default='Add Package Here')
def __init__(self, package_name):
self.package_name = package_name
admin.add_view(ModelView(Packeges, db.session))
class UserSubscription(db.Model):
__tablename__ = 'user_subscription'
id = db.Column(db.Integer, primary_key=True)
user_profile = db.Column(db.String(80), unique=True)
package_name = db.Column(db.Integer, db.ForeignKey(Packeges.id))
packages = db.relationship(Packeges, backref='package')
timestamp = db.Column(db.DateTime)
expiry = db.Column(db.DateTime)
def __init__(self, user_profile, package_name, timestamp, expiry):
self.user_profile = user_profile
self.package_name = package_name
self.timestamp = timestamp
self.expiry = expiry
admin.add_view(ModelView(UserSubscription, db.session))
追溯:
TypeError
TypeError: __init__() takes exactly 2 arguments (1 given)
Traceback (most recent call last)
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask\app.py", line 1994, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask\app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask\app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask\app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask_admin\base.py", line 69, in inner
return self._run_view(f, *args, **kwargs)
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask_admin\base.py", line 368, in _run_view
return fn(self, *args, **kwargs)
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask_admin\model\base.py", line 1920, in create_view
model = self.create_model(form)
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask_admin\contrib\sqla\view.py", line 1028, in create_model
Open an interactive python shell in this frameif not self.handle_view_exception(ex):
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask_admin\contrib\sqla\view.py", line 1011, in handle_view_exception
return super(ModelView, self).handle_view_exception(exc)
File "C:\Users\AliKhan\flask_ecom\env\lib\site-packages\flask_admin\contrib\sqla\view.py", line 1022, in create_model
model = self.model()
【问题讨论】:
-
请发布完整的回溯,以便我们查看上下文(它在哪一行等)
-
我已经更新了原始问题下的完整回溯。
-
Packeges 中的 __init__() 函数要求您至少传递一个参数(除了 self)。 ModelView(Packeges("abc"), db.session) 应该让它工作
-
使用您提出的解决方案,我收到类似“Traceback(最近一次调用最后一次):文件“app.py”,第 124 行,在
admin.add_view(ModelView(Packeges('abc' ), db.session)) 文件“C:\Users\Alikhan\flask_ecomm\env\lib\site-packages\flask_admin\contrib\ sqla\view.py”,第 318 行,在 init menu_icon_value =menu_icon_value) 文件“C:\Users\Alikhan\flask_ecomm\env\lib\site-packages\flask_admin\model\base.py”,第 760 行,在 init 名称 = '%s' % self._prettify_class_name(model.__name__) AttributeError: 'Packeges' 对象没有属性 'name'"