Global Search Query¶
Magql provides a search
query field that will perform a global search using
registered providers. Magql-SQLAlchemy registers a provider for each model that
will search all string columns.
The Query and Results¶
The search
query field takes one argument, value
, the string to search for.
It returns a list of items.
The items in the list have the following keys:
type
, the name of the model class.id
, the primary key of the row.value
, the string representation of the model row (str(item)
).extra
, currently unused, arbitrary extra information about the row.
Using the type
and id
, a UI could present search results that link to that
item.
Disabling for a Model¶
When using ModelGroup.from_declarative_base
, it takes a search
argument to control what models are searchable.
By default, search
is True
, which generates a search provider for ever
model. You can reassign ModelManager.search_provider
to None
to
disable search for that model. If you set search
to False
, no providers will
be generated.
You can pass a set of model classes and/or model names to search
to
generate providers only for those models.
Customizing a Provider¶
The default search provider for each model is ColumnSearchProvider
,
which generates a ILIKE
query against all of the model’s string-like columns.
ModelManager.search_provider
can be reassigned to any callable that
takes a value
argument and returns a list of
magql.search.SearchResult
instances.