diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-12-24 23:43:47 +0100 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-12-28 09:42:59 +0100 |
| commit | bb8ec71f61066587aa3a8feb0aedab213422775a (patch) | |
| tree | a0c56cd92a456d87d041a80ce590b115a435a014 /docs/howto | |
| parent | aff57793b46e108c6e48d5ce3b889bf90b513df9 (diff) | |
Updated the AppCommand API to support apps without a models module.
Diffstat (limited to 'docs/howto')
| -rw-r--r-- | docs/howto/custom-management-commands.txt | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/docs/howto/custom-management-commands.txt b/docs/howto/custom-management-commands.txt index 2325e32ac2..4f95838760 100644 --- a/docs/howto/custom-management-commands.txt +++ b/docs/howto/custom-management-commands.txt @@ -313,17 +313,34 @@ BaseCommand subclasses .. class:: AppCommand -A management command which takes one or more installed application -names as arguments, and does something with each of them. +A management command which takes one or more installed application labels as +arguments, and does something with each of them. -Rather than implementing :meth:`~BaseCommand.handle`, subclasses must implement -:meth:`~AppCommand.handle_app`, which will be called once for each application. +Rather than implementing :meth:`~BaseCommand.handle`, subclasses must +implement :meth:`~AppCommand.handle_app_config`, which will be called once for +each application. + +.. method:: AppCommand.handle_app_config(app_config, **options) + + Perform the command's actions for ``app_config``, which will be an + :class:`~django.apps.AppConfig` instance corresponding to an application + label given on the command line. + +.. versionchanged:: 1.7 + + Previously, :class:`AppCommand` subclasses had to implement + ``handle_app(app, **options)`` where ``app`` was a models module. The new + API makes it possible to handle applications without a models module. The + fastest way to migrate is as follows:: -.. method:: AppCommand.handle_app(app, **options) + def handle_app_config(app_config, **options): + if app_config.models_module is None: + return # Or raise an exception. + app = app_config.models_module + # Copy the implementation of handle_app(app_config, **options) here. - Perform the command's actions for ``app``, which will be the - Python module corresponding to an application name given on - the command line. + However, you may be able to simplify the implementation by using directly + the attributes of ``app_config``. .. class:: LabelCommand |
