{"id":23186,"library":"wtforms-sqlalchemy","title":"WTForms-SQLAlchemy","description":"SQLAlchemy utilities for WTForms, including model form generation, query-based choice fields, and integration with SQLAlchemy ORM. Current version 0.4.2, requires Python >=3.9. Release cadence is sporadic.","status":"active","version":"0.4.2","language":"python","source_language":"en","source_url":"https://github.com/wtforms/wtforms-sqlalchemy","tags":["wtforms","sqlalchemy","forms","orm"],"install":[{"cmd":"pip install wtforms-sqlalchemy","lang":"bash","label":"install from PyPI"}],"dependencies":[{"reason":"Core dependency","package":"SQLAlchemy","optional":false},{"reason":"Core dependency","package":"WTForms","optional":false}],"imports":[{"note":"Old path from Flask-WTF; removed in wtforms-sqlalchemy 0.4","wrong":"from wtforms.ext.sqlalchemy.fields import QuerySelectField","symbol":"QuerySelectField","correct":"from wtforms_sqlalchemy.fields import QuerySelectField"},{"note":"ModelForm class replaced by model_form factory function","wrong":"from flask_wtf import FlaskForm","symbol":"ModelForm","correct":"from wtforms_sqlalchemy.orm import model_form"}],"quickstart":{"code":"from sqlalchemy import create_engine, Column, Integer, String\nfrom sqlalchemy.orm import DeclarativeBase\nfrom wtforms import Form, StringField\nfrom wtforms_sqlalchemy.orm import model_form\n\nclass Base(DeclarativeBase):\n    pass\n\nclass User(Base):\n    __tablename__ = 'users'\n    id = Column(Integer, primary_key=True)\n    name = Column(String)\n\nengine = create_engine('sqlite:///:memory:', echo=False)\nBase.metadata.create_all(engine)\n\nUserForm = model_form(User, base_class=Form, exclude=['id'])\nform = UserForm(data={'name': 'Alice'})\nprint(form['name'].data)  # Alice","lang":"python","description":"Create a form model from a SQLAlchemy declarative model using model_form."},"warnings":[{"fix":"Use wtforms_sqlalchemy.fields and wtforms_sqlalchemy.orm instead.","message":"0.4 removed the old Flask-WTF compatibility layer. Imports from wtforms.ext.sqlalchemy no longer work.","severity":"breaking","affected_versions":"0.4.x"},{"fix":"Replace ModelForm subclass with model_form(Model, base_class=Form, ...).","message":"ModelForm class (from wtforms_sqlalchemy.orm) is deprecated in 0.4.2 and slated for removal. Use the model_form() factory function instead.","severity":"deprecated","affected_versions":">=0.4.0"},{"fix":"Pass a lambda that returns the query, e.g., query_factory=lambda: session.query(Model).","message":"QuerySelectField and QuerySelectMultipleField require a query factory, not a static query. Passing a SQLAlchemy query object will raise 'BaseQuery object is not callable'.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'0.4.2':24 '3.9':27 'base':14 'cadenc':29 'choic':15 'current':22 'field':16 'form':10,34 'generat':11 'includ':8 'integr':18 'model':9 'orm':21,35 'python':26 'queri':13 'query-bas':12 'releas':28 'requir':25 'sporad':31 'sqlalchemi':3,4,20,33 'util':5 'version':23 'wtform':2,7,32 'wtforms-sqlalchemi':1","created_at":"2026-05-01T06:02:52.722820+00:00","updated_at":"2026-05-01T06:02:52.722820+00:00","problems":[{"fix":"Use 'from wtforms_sqlalchemy.fields import QuerySelectField'","cause":"Old import path from Flask-WTF; removed in wtforms-sqlalchemy 0.4","error":"ImportError: cannot import name 'QuerySelectField' from 'wtforms.ext.sqlalchemy'"},{"fix":"Use query_factory=lambda: session.query(Model) or query_factory=Model.query (if Flask-SQLAlchemy)","cause":"Passing a static query object instead of a callable query factory to QuerySelectField","error":"TypeError: 'BaseQuery' object is not callable"},{"fix":"Update to >=0.4.2: pip install --upgrade wtforms-sqlalchemy","cause":"Installed version is too old (pre-0.4) or installation is incomplete","error":"AttributeError: module 'wtforms_sqlalchemy' has no attribute 'orm'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.4.2","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/pallets-eco/wtforms-sqlalchemy","docs":"https://wtforms-sqlalchemy.readthedocs.io/","changelog":"https://wtforms-sqlalchemy.readthedocs.io/changes/","pypi":"https://pypi.org/project/wtforms-sqlalchemy/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["database","web-framework"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-29","last_verified":"2026-06-29","next_check":"2026-07-29","install_tag":null}}