Skip to main content

tests coverage docs pypi

django-queryable-properties is a Django extension that allows to implement model properties which can be used in database queries performed via Django’s ORM.

Further information, including supported Python and Django versions as well as installation instructions, can be found in the documentation hosted by readthedocs.

Contributing and getting help

The GitHub repository is the central place to report bugs and get help using the GitHub issues as well as to contribute to the project via pull requests while following the guide on contributing.

Changelog

master (unreleased)

1.13.0 (2026-08-06)

  • Added support for Django 6.1

  • Added a Django setting that allows to apply queryset fetch modes to annotatable queryable properties (QUERYABLE_PROPERTIES_APPLY_FETCH_MODE)

1.12.1 (2025-12-04)

  • Added support for Django 6.0

  • Added support for Python 3.14

  • Added missing docstrings and restructured docs regarding common properies

1.12.0 (2025-08-07)

  • Added a new and advanced queryable property implementation that allows to retrieve the final subclass object in inheritance scenarios (InheritanceObjectProperty)

  • Added a new and advanced queryable property implementation that allows to determine the content type of the object it’s attached to (ContentTypeProperty)

1.11.0 (2025-05-13)

  • Added a new ready-to-use queryable property implementation that provides information about the final model in inheritance scenarios (InheritanceModelProperty)

  • Queryable properties on related models can now be used in the admin’s list_display in Django versions above 1.7

  • Queryable properties in the admin’s list_filter are now processed in a more robust way, eliminating the need for special handling when overriding get_list_filter (as a result, the process_queryable_property_filters admin method is now deprecated)

1.10.1 (2025-04-02)

  • Added support for Django 5.2

  • Improved the prefetch_queryable_properties utility for proper support of SubqueryObjectProperty and composite primary keys

1.10.0 (2025-01-28)

  • Added support for Python 3.13

  • Added a new and advanced queryable property implementation that can load entire model objects from subqueries (SubqueryObjectProperty)

  • Fixed admin checks for OrderBy objects in admin ordering

1.9.3 (2024-08-08)

  • Added support for Django 5.1

  • Dropped support for Python 3.4

1.9.2 (2024-03-06)

  • Fixed an error that prevented querysets with queryable property features from being used as filter values in __in filters (i.e. implicit subqueries)

1.9.1 (2024-01-09)

  • Fixed resolving of filter conditions of aggregate properties in cases where a property was accessed via relation

1.9.0 (2023-12-05)

  • Added support for Django 5.0

  • Added support for Python 3.12

  • Added options to create querysets/managers with queryable property features on demand and without having to define a manager on the corresponding model

  • Queryable properties can now be populated in raw queries by using the property name as SQL column name

1.8.5 (2023-11-13)

  • Selected queryable properties are no longer aliased with a unique name in queries and use their regular name instead (also fixes errors that occurred when queries use themselves as subqueries recursively, e.g. in sliced prefetches)

1.8.4 (2023-04-05)

  • Added support for Django 4.2

  • Added support for Python 3.11

1.8.3 (2022-08-06)

  • Added support for Django 4.1

1.8.2 (2022-06-08)

  • Fixed queryset cloning in conjunction with positional arguments in Django versions below 1.9

1.8.1 (2022-03-05)

  • Fixed erroneous transformations of querysets with queryable properties functionality into .values() querysets under rare circumstances in Django versions above 3.0

  • Fixed the ability to pickle .values()/.values_list() querysets with queryable properties functionality in Django versions below 1.9

  • Fixed the erroneous inclusion of values of queryable properties that are used for ordering without being explicitly selected in .values()/.values_list() querysets in Django versions below 1.8

1.8.0 (2021-12-07)

  • Added support for Django 4.0

  • Added new ready-to-use queryable property implementations for properties based on subqueries (SubqueryFieldProperty, SubqueryExistenceCheckProperty)

  • RelatedExistenceCheckProperty objects can now be configured as negated to be able to check for the non-existence of related objects

1.7.1 (2021-11-01)

  • Added support for Python 3.10

  • Fixed duplicate selections of GROUP BY columns when multiple aggregate properties are selected, which also led to wrong property values, in Django versions below 1.8

1.7.0 (2021-07-05)

  • Added the prefetch_queryable_properties utility function which allows to efficiently query property values for model instances that were already loaded from the database beforehand

  • Extended the LookupFilterMixin to allow to define a filter function/method that handles all lookups that don’t use an explicitly registered function/method

  • Values for queryable properties with setters can now also be set using initializer keyword arguments of their respective models

1.6.1 (2021-04-19)

  • Fixed the AnnotationGetterMixin and its subclasses to be able to work with nested properties correctly regardless of whether or not the model’s base manager uses the queryable properties extensions

  • Fixed the admin filter that displays all possible options to be able to work with nested properties correctly regardless of whether or not the model’s default manager uses the queryable properties extensions

1.6.0 (2021-04-06)

  • Added support for Django 3.2

  • Queryable properties can now define a verbose name that can be used in UI representations

  • Added a Django admin integration that allows to reference queryable properties like regular model fields in various admin options

  • Fixed the construction of GROUP BY clauses when using annotations based on aggregate queryable properties in Django 1.8

1.5.0 (2020-12-30)

  • Added an option to implement annotation-based properties that use their annotation to query their getter value from the database

  • Added a new ready-to-use queryable property implementation for properties that check whether or not certain related objects exist (RelatedExistenceCheckProperty)

  • Added a new ready-to-use queryable property implementation for properties that map field/attribute values to other values (MappingProperty)

1.4.1 (2020-10-21)

  • String representations of queryable properties do now contain the full Python path instead of the Django model path (also fixes an error that occurred when building the string representation for a property on an abstract model that was defined outside of the installed apps)

1.4.0 (2020-10-17)

  • ValueCheckProperty and RangeCheckProperty objects can now take more complex attribute paths instead of simple field/attribute names

  • RangeCheckProperty objects now have an option that determines how to treat missing values to support ranges with optional boundaries

  • Added a new ready-to-use queryable property implementation for properties based on simple aggregates (AggregateProperty)

1.3.1 (2020-08-04)

  • Added support for Django 3.1

  • Refactored decorator-based properties to be more maintainable and memory-efficient and documented a way to use them without actually decorating

1.3.0 (2020-05-22)

  • Added an option to implement simplified custom boolean filters utilizing lookup-based filters

  • Fixed the ability to use the classmethod or staticmethod decorators with lookup-based filter methods for decorator-based properties

  • Fixed the queryable property resolution in When parts of conditional updates

  • Fixed the ability to use conditional expressions directly in .filter/.exclude calls in Django 3.0

1.2.1 (2019-12-03)

  • Added support for Django 3.0

1.2.0 (2019-10-21)

  • Added a mixin that allows custom filters for queryable properties (both class- and decorator-based) to be implemented using multiple functions/methods for different lookups

  • Added some ready-to-use queryable property implementations (ValueCheckProperty, RangeCheckProperty) to simplify common code patterns

  • Added a standalone version of six to the package requirements

1.1.0 (2019-06-23)

  • Queryable property filters (both annotation-based and custom) can now be used across relations when filtering querysets (i.e. a queryset can now be filtered by a queryable property on a related model)

  • Queryset annotations can now refer to annotatable queryable properties defined on a related model

  • Querysets can now be ordered by annotatable queryable properties defined on a related model

  • Filters and annotations that reference annotatable queryable properties will not select the queryable property annotation anymore in Django versions below 1.8 (ordering by such a property will still lead to a selection in these versions)

  • Fixed unnecessary selections of queryable property annotations in querysets that don’t return model instances (i.e. queries with .values() or .values_list())

  • Fixed unnecessary fields in GROUP BY clauses in querysets that don’t return model instances (i.e. queries with .values() or .values_list()) in Django versions below 1.8

  • Fixed an infinite recursion when constructing the HAVING clause for annotation-based filters that are not an aggregate in Django 1.8

1.0.2 (2019-06-02)

  • The lookup parameter of custom filter implementations of queryable properties will now receive the combined lookup string if multiple lookups/transforms are used at once instead of just the first lookup/transform

  • Fixed the construction of GROUP BY clauses when annotating queryable properties based on aggregates

  • Fixed the construction of HAVING clauses when annotating queryable properties based on aggregates in Django versions below 1.9

  • Fixed the ability to pickle queries and querysets with queryable properties functionality in Django versions below 1.6

1.0.1 (2019-05-11)

  • Added support for Django 2.2

1.0.0 (2018-12-31)

  • Initial release

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_queryable_properties-1.13.0.tar.gz (96.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_queryable_properties-1.13.0-py2.py3-none-any.whl (123.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file django_queryable_properties-1.13.0.tar.gz.

File metadata

File hashes

Hashes for django_queryable_properties-1.13.0.tar.gz
Algorithm Hash digest
SHA256 dc9051d54e2eb54081df51702bffaf08078f5a7de76b3324d482312b31a8e420
MD5 55591b469d4ff122dec124e61c5cd7c3
BLAKE2b-256 4a11a6002742b8c6ed3b228c8d05f903aa0c090516265c1f8b88722be347c3f4

See more details on using hashes here.

File details

Details for the file django_queryable_properties-1.13.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_queryable_properties-1.13.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8d4d67a9206593f477a91d5a4a862ef117c6dfc1132250e5f05b11544f26fd22
MD5 0830776d7918fa00fc2f54d9094389ed
BLAKE2b-256 d8d894091bd9efb4eae12ab41a7dca7d9769fc13dec7e6335860e42d57505088

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.13.0 This release

2 files

1.12.1

2 files

1.12.0

2 files

1.11.0

2 files

1.10.1

2 files

1.10.0

2 files

1.9.3

2 files

1.9.2

2 files

1.9.1

2 files

1.9.0

2 files

1.8.5

2 files

1.8.4

2 files

1.8.3

2 files

1.8.2

2 files

1.8.1

2 files

1.8.0

2 files

1.7.1

2 files

1.7.0

2 files

1.6.1

2 files

1.6.0

2 files

1.5.0

2 files

1.4.1

2 files

1.4.0

2 files

1.3.1

2 files

1.3.0

2 files

1.2.1

2 files

1.2.0

2 files

1.1.0

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page