# DB Model Query

The implementation in `neutron_lib.db.model_query` is intended to be used as a stepping stone for existing consumers using standard database models/tables. Moving forward new database implementations should all use neutron’s Versioned Object approach, while existing model based implementations should begin migrating to Versioned Objects.

## Registering Hooks

The `neutron_lib.db.model_query.register_hook` function allows hooks to be registered for invocation during a respective database query.

Each hook has three components:

- “query”: used to build the query expression

- “filter”: used to build the filter expression

- “result_filters”: used for final filtering on the query result

Query hooks take as input the query being built and return a transformed query expression. For example:

    def mymodel_query_hook(context, original_model, query):
        augmented_query = ...
        return augmented_query

Filter hooks take as input the filter expression being built and return a transformed filter expression. For example:

    def mymodel_filter_hook(context, original_model, filters):
        refined_filters = ...
        return refined_filters

Result filter hooks take as input the query expression and the filter expression, and return a final transformed query expression. For example:

    def mymodel_result_filter_hook(query, filters):
        final_filters = ...
        return query.filter(final_filters)

this page last updated: 2026-03-26 12:58:28

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug