Skip to content

Instantly share code, notes, and snippets.

@pearlus
Forked from anonymous/QuerySelectField
Last active April 14, 2016 11:06
Show Gist options
  • Save pearlus/6595603e0e9fd89601ae0ba4e5e1cd54 to your computer and use it in GitHub Desktop.
Save pearlus/6595603e0e9fd89601ae0ba4e5e1cd54 to your computer and use it in GitHub Desktop.
###FORM
def landscape_choices():
return LandscapeFormOpt.query
class ServerForm(NoCsrfForm):
landscape_name = QuerySelectField('Landscape nnname', query_factory=landscape_choices, get_label='landscape_name')
class LTestForm(Form):
server = FieldList(FormField(ServerForm, default=lambda: Server()))
submit = SubmitField('Submit')
###MODEL
class Project(db.Model):
__tablename__ = 'projects'
id = db.Column(db.Integer, primary_key=Tr
server = db.relationship('Server')
def __repr__(self):
return '<Project %r>' % self.name
class Server(db.Model):
__tablename__ = 'server'
id = db.Column(db.Integer, primary_key=True)
project_id = db.Column(db.Integer, db.ForeignKey('projects.id'))
landscape_name = db.Column(db.Integer, db.ForeignKey('landscape_form_opt.id'))
class LandscapeFormOpt(db.Model):
__tablename__ = 'landscape_form_opt'
id = db.Column(db.Integer, primary_key=True)
landscape_name = db.Column(db.Text())
server_relationship = db.relationship('Server', backref='role', lazy='dynamic')
###VIEW
@main.route('/edit_pursuit/ope-'+'<project_ope>', methods=['GET', 'POST'])
@login_required
def edit_pursuit(project_ope):
form_landscape = LTestForm(obj=project)
form_landscape.populate_obj(project)
db.session.add(project)
db.session.commit()
@pearlus
Copy link
Author

pearlus commented Apr 14, 2016

Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1836, in call
return self.wsgi_app(environ, start_response)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functionsrule.endpoint
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask_login.py", line 792, in decorated_view
return func(_args, *_kwargs)
File "/Users/pearl/Google Drive/Python/EAH_Flask/app/main/views.py", line 184, in edit_pursuit
db.session.commit()
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/orm/scoping.py", line 157, in do
return getattr(self.registry(), name)(_args, *_kwargs)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/orm/session.py", line 801, in commit
self.transaction.commit()
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/orm/session.py", line 392, in commit
self._prepare_impl()
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/orm/session.py", line 372, in _prepare_impl
self.session.flush()
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/orm/session.py", line 2019, in flush
self._flush(objects)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/orm/session.py", line 2137, in _flush
transaction.rollback(_capture_exception=True)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/util/langhelpers.py", line 60, in exit
compat.reraise(exc_type, exc_value, exc_tb)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 184, in reraise
raise value
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/orm/session.py", line 2101, in _flush
flush_context.execute()
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/orm/unitofwork.py", line 373, in execute
rec.execute(self)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/orm/unitofwork.py", line 532, in execute
uow
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/orm/persistence.py", line 170, in save_obj
mapper, table, update)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/orm/persistence.py", line 706, in _emit_update_statements
execute(statement, multiparams)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 914, in execute
return meth(self, multiparams, params)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement
compiled_sql, distilled_params
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context
context)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1341, in _handle_dbapi_exception
exc_info
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 200, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 183, in reraise
raise value.with_traceback(tb)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context
context)
File "/Users/pearl/EAH_Flask/lib/python3.5/site-packages/sqlalchemy/engine/default.py", line 450, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'LandscapeFormOpt' [SQL: 'UPDATE server SET landscape_name=%(landscape_name)s, storage=%(storage)s WHERE server.id = %(server_id)s'] [parameters: {'storage': '3', 'server_id': 9, 'landscape_name': <app.models.LandscapeFormOpt object at 0x1082dbda0>}]

@pearlus
Copy link
Author

pearlus commented Apr 14, 2016

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'LandscapeFormOpt' [SQL: 'UPDATE server SET landscape_name=%(landscape_name)s, storage=%(storage)s WHERE server.id = %(server_id)s'] [parameters: {'storage': '3', 'landscape_name': app.models.LandscapeFormOpt object at 0x107c96780, 'server_id': 9}]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment