- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 Flask
、Flask-SQLAlchemy
和 Flask-ReSTLess
为小型私有(private) AngularJS 应用程序提供 REST 路由。到目前为止,我已经能够有效地创建/使用不包含任何关系的路线。
但是,我有一些表必须与其他表有关系,这就是我的问题所在。当向 Flask-ReSTLess 路由进行 POST 时,我收到以下 Flask 错误:
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python2.7/dist-packages/flask_restless/views.py", line 145, in decorator
return func(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/mimerender.py", line 227, in wrapper
result = target(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask/views.py", line 84, in view
return self.dispatch_request(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask/views.py", line 149, in dispatch_request
return meth(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask_restless/views.py", line 1263, in post
self.session.add(instance)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 150, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1492, in add
self._save_or_update_state(state)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1510, in _save_or_update_state
halt_on=self._contains_state):
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/mapper.py", line 2457, in cascade_iterator
visited_states, halt_on))
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/relationships.py", line 1449, in cascade_iterator
get_all_pending(state, dict_)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/dynamic.py", line 185, in get_all_pending
c.all_items
AttributeError: 'NoneType' object has no attribute '_sa_instance_state'
我认为这个错误与我的模型有关。这是我当前的模型定义:
surveyOptions = db.Table('survey_options',
db.Column('survey_id', db.Integer, db.ForeignKey('survey.id')),
db.Column('option_id', db.Integer, db.ForeignKey('option.id')),
db.Column('count', db.Integer)
)
class Survey(db.Model):
id = db.Column(db.Integer, primary_key=True)
category = db.Column(db.String(50))
question = db.Column(db.Text)
startDate = db.Column(db.DateTime)
endDate = db.Column(db.DateTime)
options = db.relationship('Option', secondary=surveyOptions,
backref=db.backref('surveys', lazy='dynamic'), lazy='dynamic')
def __init__(self, category, question, startDate=None, endDate=None, options=None):
self.category = category
self.question = question
if startDate == None:
self.startDate = datetime.utcnow()
if endDate == None:
self.endDate = datetime.utcnow()
self.options.append(options)
class Option(db.Model):
id = db.Column(db.Integer, primary_key=True)
text = db.Column(db.Text)
def __init__(self, text):
self.text = text
...
manager = flask.ext.restless.APIManager(app, flask_sqlalchemy_db=db)
manager.create_api(Survey, methods=['GET','POST','PUT','DELETE'], include_columns=['id','category', 'question', 'startDate','endDate', '_options.id','options.text']);
我非常感谢您提供一些帮助来隔离此错误的根源。我不确定下一步该去哪里解决此错误。
如果需要,我可以根据要求提供更多前端和后端代码示例。
最佳答案
这是因为您似乎在本节中附加了一个列表:
def __init__(self, category, question, startDate=None, endDate=None, options=None):
self.category = category
self.question = question
if startDate == None:
self.startDate = datetime.utcnow()
if endDate == None:
self.endDate = datetime.utcnow()
self.options.append(options) # assuming options is a list, this will fail.
这个问题的原因很简单。如果我有我的选项列表:
foo = ['one', 'two']
我想为其添加更多选项:
bar = ['three', 'four']
如果我foo.append(bar)
我得到:
foo = ['one', 'two', ['three', 'four']]
而您实际上正在寻找 foo + bar
,它会给您:
foo = ['one', 'two', 'three', 'four']
当您解决该问题时,您仍然会遇到第二个更奇怪的问题 - 如果您在创建 Survey
对象时未指定 options
,那么就目前而言,您的代码将尝试将 self.options.append(None)
添加到您的对象。您需要为此添加检查:
if choices: # None or [] will evaluate to False
self.choices += choices
我还注意到您使用 ==
运算符与 None
进行比较,您实际上应该使用 is
进行这些比较,例如如果 startDate 为 None:
。
关于python - Flask ReSTLess 属性错误 : 'NoneType' object has no attribute '_sa_instance_state' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26695625/
我有一个包含超过 200 000 个 json 文件的文件夹。每个 json 对象都是一个 Tweet(推特)。将推文保存到数据库时出现错误 #sqlalchemy_insert.py def cre
我有一个包含谜题和类别的多对多关系数据库。当我第一次运行它时,一切都运行得非常好。所有表格都已创建并填充了内容。但是,当我第二次运行它以进一步填充数据库时,弹出以下错误。 AttributeError
我有一个包含谜题和类别的多对多关系数据库。当我第一次运行它时,一切都运行得非常好。所有表格都已创建并填充了内容。但是,当我第二次运行它以进一步填充数据库时,弹出以下错误。 AttributeError
我想评估链接到两个不同用户的值。我创建了一个不同的表来跟踪用户以前的体验和他们感兴趣的体验并将它们链接到用户。我有一个匹配函数,试图找到最相似的用户,但它给出了标题中列出的属性错误。 型号: clas
虽然他们的修复没有解决我的问题,但我已经看到其他有类似错误的问题。请注意,我使用的是 Flask-SQLAlchemy。 这是我的模型文件: class subjects(db.Model):
我收到以下错误,但我不确定如何修复它。我认为这与 is_bestfriend 关系有关。 File "/usr/local/lib/python2.7/dist-packages/flask/app.
我正在学习如何使用 SQLAlchemy。我正在尝试执行以下操作,但将标题和链接存储在两个单独的表中: temp = Submissions(title=u'Facebook Homepage', l
我正在使用 Flask 制作论坛模板。当我尝试使用表单在浏览器中创建一个新线程时,SQLAlchemy 会抛出一个 AttributeError。当我尝试使用 Forum-to-Thread 实现一对
我在我的应用程序中使用 Flask,并收到 AttributeError: '_Option' object has no attribute '_sa_instance_state' 错误。不知道它
您好,我正在尝试做一个简单的应用程序,用户可以在其中制作新的鸡尾酒。因此我有两个具有多对多关系的模型 from . import db assoc_table = db.Table('associat
问题:继承类不检查字符串,因为它作为None 传递。 检索方法的父类 (object.py) 旨在从数据库中检索对象(例如 ID 或用户/评估组合)。子类 (convenience.py) 旨在接受这
我正在尝试使用 SQLAlchemy + Python 向我的数据库中添加一个项目,但一直出现错误。 我的数据库_setup.py: class company(Base): __tablen
我在将值附加到关联表时遇到问题。从那以后我就没有解决过这个问题。不知道是感情的问题还是其他的问题。 这是我的关联表 item_tags_association_table = db.Table('it
我目前正在使用 Flask、Flask-SQLAlchemy 和 Flask-ReSTLess 为小型私有(private) AngularJS 应用程序提供 REST 路由。到目前为止,我已经能够有
我正在使用 Flask-ReSTLess、Flask-SQLAlchemy 和 Marshmallow 开发一个基本的 CRUD JSON REST API。 我在使用这种库组合时遇到问题,但只有当我
问题是尝试使用 Pyramid 上的 SQLAlchemy 从数据库中检索具有关系的对象。我想要的基本上是创建我需要从数据库中检索的对象,以完成网页所需的数据。 当我尝试访问 url/poll/{id
我是一名优秀的程序员,十分优秀!