Add docs for dependencies func
This commit is contained in:
@@ -4,6 +4,12 @@ Model helpers
|
|||||||
.. module:: sqlalchemy_utils.functions
|
.. module:: sqlalchemy_utils.functions
|
||||||
|
|
||||||
|
|
||||||
|
dependencies
|
||||||
|
^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. autofunction:: dependencies
|
||||||
|
|
||||||
|
|
||||||
escape_like
|
escape_like
|
||||||
^^^^^^^^^^^
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
@@ -8,6 +8,7 @@ from .functions import (
|
|||||||
create_mock_engine,
|
create_mock_engine,
|
||||||
database_exists,
|
database_exists,
|
||||||
defer_except,
|
defer_except,
|
||||||
|
dependencies,
|
||||||
drop_database,
|
drop_database,
|
||||||
escape_like,
|
escape_like,
|
||||||
get_columns,
|
get_columns,
|
||||||
@@ -74,6 +75,7 @@ __all__ = (
|
|||||||
create_mock_engine,
|
create_mock_engine,
|
||||||
database_exists,
|
database_exists,
|
||||||
defer_except,
|
defer_except,
|
||||||
|
dependencies,
|
||||||
drop_database,
|
drop_database,
|
||||||
escape_like,
|
escape_like,
|
||||||
force_auto_coercion,
|
force_auto_coercion,
|
||||||
|
@@ -12,6 +12,7 @@ from .database import (
|
|||||||
non_indexed_foreign_keys,
|
non_indexed_foreign_keys,
|
||||||
)
|
)
|
||||||
from .orm import (
|
from .orm import (
|
||||||
|
dependencies,
|
||||||
get_columns,
|
get_columns,
|
||||||
get_declarative_base,
|
get_declarative_base,
|
||||||
get_primary_keys,
|
get_primary_keys,
|
||||||
|
@@ -27,6 +27,9 @@ def dependencies(obj, foreign_keys=None):
|
|||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
|
from sqlalchemy_utils import dependencies
|
||||||
|
|
||||||
|
|
||||||
dependencies(user)
|
dependencies(user)
|
||||||
|
|
||||||
|
|
||||||
@@ -37,22 +40,29 @@ def dependencies(obj, foreign_keys=None):
|
|||||||
dependencies(user).limit(5)
|
dependencies(user).limit(5)
|
||||||
|
|
||||||
|
|
||||||
The common use case is checking for all dependent objects before delete
|
The common use case is checking for all dependent objects before deleting
|
||||||
operation occurs on parent object and inform the user if there are
|
parent object and inform the user if there are dependent objects with
|
||||||
dependent objects with ondelete='RESTRICT' foreign keys. This can be
|
ondelete='RESTRICT' foreign keys. If this kind of checking is not used
|
||||||
achieved as follows::
|
it will lead to nasty IntegrityErrors being raised. This can be achieved
|
||||||
|
as follows::
|
||||||
|
|
||||||
|
|
||||||
|
deps = list(
|
||||||
dependencies(
|
dependencies(
|
||||||
user,
|
user,
|
||||||
(
|
(
|
||||||
fk for fk in get_referencing_foreign_keys(obj)
|
fk for fk in get_referencing_foreign_keys(obj)
|
||||||
# On most databases RESTRICT is the default mode hence we check
|
# On most databases RESTRICT is the default mode hence we
|
||||||
# for None values also
|
# check for None values also
|
||||||
if fk.ondelete='RESTRICT' or fk.ondelete is None
|
if fk.ondelete='RESTRICT' or fk.ondelete is None
|
||||||
)
|
)
|
||||||
|
).limit(5)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if deps:
|
||||||
|
# Do something to inform the user
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
:param obj: SQLAlchemy declarative model object
|
:param obj: SQLAlchemy declarative model object
|
||||||
:param foreign_keys:
|
:param foreign_keys:
|
||||||
|
Reference in New Issue
Block a user