All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Move to org by @aminalaee in #1018
- extra blocks for templates allowing customization by @birddevelper in #952
- Add template hooks to all filters for customizable UIs (dropdowns, sliders, etc.) by @fd-oncodna in #970
- Support MappedAsDataclass by @Goradii in #857
- save values types as is if possible while JSON export by @DenisDudnik in #865
- Add toast to notify results for custom actions by @rusanpas in #971
- Showing exceptions happened during delete in list page as per #898 by @mmzeynalli in #1022
- Quality of Life updates by @mmzeynalli in #1026
- [Feature] Check the available primary actions (edit, delete, view details) for each row on listing page. by @maxim-f1 in #874
- Fix #841: Cannot update value of attribute with reserved name when it starts empty/null by @mmzeynalli in #1028
- Fix TypeError with UUID primary keys in issubclass check by @S3wnkin in #992
- core: fix ambiguous column error when searching or sorting by @nurikk in #983
- Handling SQLAlchemy UUID fields correctly by introducing new UuidField. by @mmzeynalli in #1023
- Fixes #915: Sorting exposed functions by their coded order not alphabetical by @mmzeynalli in #1024
- fix: add RootPathMiddleware for proper static file routing with root_… by @JartanFTW in #996
- @S3wnkin made their first contribution in #992
- @fd-oncodna made their first contribution in #970
- @Goradii made their first contribution in #857
- @nurikk made their first contribution in #983
- @DenisDudnik made their first contribution in #865
- @rusanpas made their first contribution in #971
- @JartanFTW made their first contribution in #996
Full Changelog: https://github.com/smithyhq/sqladmin/compare/0.24.0...0.25.0
- Improve logout button and
logo_urlby @maxim-f1 in #995 - Support filtering Date and Datetime fields with "less than" and "greater than" operations. by @caarmen in #1010
- Added switch style for checkbox and fixed related bug. by @maxim-f1 in #975
- Add ModelView.search_auto_submit option for list search by @Airumian in #1003
- Add select_from to count query in models.py by @estyrke in #969
- [Bug] Improved error display in the
deletemodal window by @maxim-f1 in #994 - [Bug] Authorization vulnerability for expose and action by @maxim-f1 in #993
- @caarmen made their first contribution in #1010
- @Airumian made their first contribution in #1003
- @estyrke made their first contribution in #969
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.23.0...0.24.0
- Highlight applied filters with background and clear option by @danmysak in #964
- Implemented optional pretty CSV export by @TimofeiN in #938
- fix: use children.extend in Menu.add by @wasinski in #892
- fix: Support set-based relationships in list/detail views by @msukmanowsky in #982
- Fixing an SQLAlchemy warning by @lorg in #980
- Fix buttons width on details page by @MaximDementyev in #978
- Migrate from hatchling to uv by @mmzeynalli in #974
- Change PK column name to title in list/detail page by @wnowicki in #977
- @danmysak made their first contribution in #964
- @TimofeiN made their first contribution in #938
- @wasinski made their first contribution in #892
- @msukmanowsky made their first contribution in #982
- @MaximDementyev made their first contribution in #978
- @mmzeynalli made their first contribution in #974
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.22.0...0.23.0
- Implement OperationColumnFilter to filter String, Numeric, and UUID Types by @chezou in #945
- Support Python 3.14 by @aminalaee in #963
-
Fix filters inccorect records count by @birddevelper in #954
-
docs - update the example ColumnFilter by @proby-actvo in #949
-
Documentation improvements by @wnowicki in #941
-
Fix date and time type handling when used as primary key by @twoodwark in #958
-
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.21.0...0.22.0
- Add
category_iconby @sheldygg in #848 - Add model convertors docs by @Vasiliy566 in #883
- Allow custom response in authentication logout by @joschnitzbauer in #914
- ModelView @expose decorator support by @foarsitter in #881
- Adding the ability to add filters to model views by @lorg in #906
- Details page query by @wray27 in #929
- export csv/json in
utf-8by @alserious in #911 - Indicate Required Fields with a Red Asterisk by @maxim-f1 in #880
- Update hatch command in CONTRIBUTING.md by @foarsitter in #882
- fix: CategoryMenu is_active logic by @retromechs in #920
- Doc update - Related model name by @wnowicki in #917
- docs: Added model context, fixed syntax by @sreyemnayr in #930
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.20.1...0.21.0
- Fix export json related model by @Vasiliy566 in #837
- Fix JSON export trailing comma by @jbrendel in #843
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.20.0...0.20.1
- add json export format. by @Vasiliy566 in #829
- clamp page if it exceeds the maximum page by @alex-lambdaloopers in #814
- @Vasiliy566 made their first contribution in #829
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.19.0...0.20.0
- Add favicon by @sheldygg in #787
- Add tabler icons by @r-m-n in #795
- feat: use favicon_url instead of logo_url for favicon by @alex-lambdaloopers in #800
- Allow multiple ajax sorts and changes to result size by @mfriedy in #805
- Fix column_property by @aminalaee in #791
- Fix page number issue when changing page size by @numberbee7070 in #782
- Document update to resolve DeprecationWarning from Starlette (#809) by @a4rcvv in #810
- Bug fix: unhandled exception during AjaxSelect load by @diskream in #727
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.18.0...0.19.0
- Add
form_rules,form_create_rules,form_edit_rulesby @aminalaee in #779 - Add more docs for overriding default tempates by @jonocodes in #769
- Fix edit_form_query documentation example by @lukeclimen in #777
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.17.0...0.18.0
- Add field description to Create/Edit templates by @ngaranko in #722
- Add edit_form_query method by @lukeclimen in #745
- Validate page and pageSize query parameters by @BhuwanPandey in #752
- Hide save and add another button from edit.html if can_create is False by @MaximZemskov in #742
- Fix list page sort symbol by @aminalaee in #744
- Move template files from
templatestotemplates/sqladminby @hasansezertasan in #748 - Fix
form_argsdefault by @aminalaee in #756 - Fix getting column python type by @aminalaee in #757
- Fix File and Image fields checkbox and input by @aminalaee in #761
- Switch relationship loading to selectionload by @aminalaee in #758
- Fix DELETE call query params by @aminalaee in #763
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.16.1...0.17.0
- Re-add http_exception handler to Admin class in #694
- Move non-field-specific errors to top of edit and create forms in #707
- Fix sort by model attribute in #713
- Fix Category not respecting is_visible and is_accessible in #698
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.16.0...0.16.1
- Switch to async templates by @aminalaee in #652
- Allow using related model fields in list/details page by @aminalaee in #653
- Allow sort by related model field by @aminalaee in #654
- Add search by related model field by @aminalaee in #655
- Expose request to model events by @holdmybeer1min in #660
- Allow model columns to bear the same name as reserved wtforms.BaseForm attributes by @brouberol in #658
- Change pk converter in routes by @aminalaee in #666
- Fix multiple PK model containing boolean values by @ncarvajalc in #670
- Fix brand icon is not showing by @WiraDKP in #665
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.15.2...0.16.0
- Avoid populating Select2 input with existing option by @Toshakins in #626
- Fix ItemMenu sort issue by @aminalaee in #631
- Add customized sort query signature (#624) by @YarLikviD in #625
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.15.0...0.15.1
- Update AuthenticationBackend signature by @aminalaee in #581
- Change signature of
list_queryandcount_queryby @aminalaee in #610
- Search in list when typing by @anton-petrov in #592
- Add
categoryconfig by @aminalaee in #616 - Switch to HTML time input for Time field by @aminalaee in #595
- Add modal confirmation for bulk delete by @aminalaee in #612
- Fix 'itsdangerous' import error when not using Authentication Backend by @GriceTurrble in #597
- Fix docs: Cookbook, Using a request object by @s1beria21 in #575
- Fix delete error no rows selected by @aminalaee in #591
- Fix typing of Admin session_maker by @sheldygg in #604
- Fix broken link in doc by @YannickLeRoux in #620
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.14.1...0.15.0
- Fix Detail page to not use label to get value in #570
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.14.0...0.14.1
- Pass request to model view methods by @rossmacarthur in #547
- Set
sessionmakeronBaseAdminby @rossmacarthur in #542 - Allow custom properties by @aminalaee in #544
- Change signature of delete_model by @aminalaee in #550
- Support SQLAlchemy sessionmaker in Admin by @aminalaee in #565
- Fix
exposeandactionAuth backend not called by @aminalaee in #561
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.13.0...0.14.0
- Remove httpx from requirements by @agn-7 in #520
- Fix issue when search query contains special characters by @uriyyo in #523
- Fix Ajax UUID by @aminalaee in #525
- Fix search pagination by @aminalaee in #528
- Drop Python3.7 by @aminalaee in #530
- Fix Enum in detail page by @aminalaee in #531
- Add
unique()to query related models by @florianabel in #535 - Add PosrgreSQL JSONB type support by @uriyyo in #533
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.12.0...0.13.0
- Support
sqlalchemy.sql.sqltypes.Uuidby @dexter-dopping-ekco in #501 - Implement multi pk support by @dexter-dopping-ekco in #507
- Support special
__all__keyword by @aminalaee in #511 - use @login_required for custom actions and views by @aminalaee in #513
- Each
ModelViewcan now have actions with the same name/slug by @murrple-1 in #503 - Fix count query in search page by @aminalaee in #506
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.11.0...0.12.0
- Add ability to specify custom actions by @murrple-1 in #486
- Add
ChoiceTypeby @aminalaee in #482 - Add sqlalchemy_fields URLType converter by @aminalaee in #493
- Upgrade fontawesome by @aminalaee in #481
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.10.3...0.11.0
- Fix ImageType converter by @aminalaee in #471
- reset UploadFile seek after reading by @murrple-1 in #473
- Fix unnecessary joins in details and edit page by @aminalaee in #476
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.10.2...0.10.3
- Fix nullable string fields by @aminalaee in #465
- Fix Multiselect field saving only one value by @nik-joseph in #463
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.10.1...0.10.2
- Fix PK getters for related objects by @timoniq in #449
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.10.0...0.10.1
- Change AuthenticationBackend
authenticatesignature to support OAuth in #440
- Fix docstrings by @linomp in #434
- Update to work with Starlette URL type in url_for by @aminalaee in #444
- Fix nullable Integers to accept zero value by @ovginkel in #445
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.9.0...0.10.0
- Support SQLAlchemy v2 in #411
- Support PostgreSQL arrays in #414
- Add custom form converters in #399
- Support SQLAlchemy composite types in #421
- Add sqlalchemy_utils
PhoneNumberType,ColorTypeandArrowTypein #422
- Fix re-rendering create/edit page with existing data in #385
- Fix exclude columns breaking order in #407
- Fix control relationships in list page in #409
- Fix asyncpg BigInt query in #416
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.8.0...0.9.0
- Add
save_asoption by @aminalaee in #377 - Add
save_as_continueoption by @aminalaee in #379 - Add extra Save buttons for Create/Edit page by @aminalaee in #373
- Display errors in alert for create/edit page by @aminalaee in #382
- Fix
_url_formethods ignoring root_path by @aminalaee in #371 - Fix export to use
list_queryoption by @villqrd in #381
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.7.0...0.8.0
- Add
on_model_changeandafter_model_changemethods by @dima23113 in #342 - Add
on_model_deleteandafter_model_deletemethods by @aminalaee in #343
- Fix search by uuid column by @aminalaee in #366
- Update tests after starlette upgrade by @aminalaee in #344
- Remove hard-coded related model limit by @aminalaee in #354
- Improve items list UI by @ischaojie in #349
- Make navbar work on small screens by @aminalaee in #362
- Add mypy check with config no_implicit_optional by @ischaojie in #360
- Support test-suite py311 by @ischaojie in #365
- Add py.typed for the package to ship its typing information by @franciscorode in #346
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.6.1...0.7.0
- Fix Boolean field for both nullable and non-nullable cases in #336
- Fix Flatpickr not respecting readonly inputs in #336
- Disable batch delete when can_delete permission is not provided in #335
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.6.0...0.6.1
- Add bulk delete action by @aminalaee in #317
- Handle null values when column is nullable by @aminalaee in #323
- Switch Boolean field to select field by @aminalaee in #321
- Fix form_ajax_refs example in documentation by @GitBib in #311
- Remove watch in mkdocstrings mkdocs's config by @ischaojie in #306
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.5.0...0.6.0
- Add
remote_ajax_refsin #292
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.4.0...0.5.0
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.3.0...0.4.0
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.2.1...0.3.0
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.2.0...0.2.1
- Add
list_query,count_queryandsearch_queryoptions in #243 - Add
BaseViewfor custom pages in #244 - Add
exposefor BaseView in #251 - Rename
ModelAdmintoModelViewin #249
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.1.12...0.2.0
- Add time field converter by @ischaojie in #214
- Add Edit button for "Details" page by @cuamckuu in #222
- Add column_type_formatters by @aminalaee in #239
- Fix lazy subuqery in list query by @aminalaee in #212
- Fix missing browser tab title by @cuamckuu in #229
- Remove sourceMappingURL in JS files by @aminalaee in #231
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.1.11...0.1.12
- Add
form_include_pkoption by @aminalaee in #207
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.1.10...0.1.11
- Add support for one-to-one relationship by @okapies in #182
- Add support for UUIDType from sqlalchemy_utils by @okapies in #183
- Add sqlalchemy_utils URL, Currency and Timezone by @aminalaee in #185
- Add form_widget_args by @aminalaee in #188
- Add column_default_sort by @aminalaee in #191
- Fix link relationship to details page when null by @aminalaee in #174
- docs: fix typos by @pgrimaud in #161
- Allow QuerySelectField override object_list with form_args by @aminalaee in #171
- Fix form fields order when specifying columns by @okapies in #184
- Fix ModelConverter when
implis not callable by @aminalaee in #186
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.1.9...0.1.10
- Add column_formatters by @skarrok in #140
- Add column_formatters_detail by @aminalaee in #141
- Handling for sqlalchemy_utils EmailType and IPAddressType by @colin99d in #150
- Link relationships to detail page by @aminalaee in #153
- Function signature typing, and renames by @dwreeves in #116
- Fix SQLModel UUID type by @aminalaee in #158
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.1.8...0.1.9
- Add csv export support by @dwreeves in #101
- Expose Starlette middlewares and debug to the Admin by @tr11 in #114
- Fix Export unlimited rows by @aminalaee in #107
- Add form and export options docs by @aminalaee in #110
- fix docstring issues by adding an explicit handler by @dwreeves in #106
- Fix get_model_attr with column labels by @aminalaee in #128
- Delay call to
self.get_converterto useform_overridesby @lovetoburnswhen in #129
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.1.7...0.1.8
- Add SQLModel support by @aminalaee in #94
- Add form-specific functionality to ModelAdmin by @dwreeves in #97
- Add
UUIDfield converter by @aminalaee in #82 - Add PostgreSQL
INETandMACADDRconverters by @aminalaee in #83
- Fix Boolean field checkbox UI by @aminalaee in #88
- Fix PostgreSQL UUID PrimaryKey by @aminalaee in #92
- Fix Source Code Link by @baurt in #95
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.1.6...0.1.7
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.1.5...0.1.6
- Cleanup DB queries in #51
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.1.4...0.1.5
- Improve pagination in #36
- Instantiate ModelAdmin internally to avoid class methods in #31
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.1.3...0.1.4
- Add
titleandlogooptions in #20 - Adding
order_byto list pagination query in #25 - Allow Relationship properties in list and detail views in #22
Full Changelog: https://github.com/aminalaee/sqladmin/compare/0.1.2...0.1.3