---
title: "Conas orduithe saincheaptha ``django-admin ``a chruthú"
version: 5.2
locale: ga
source: https://docs.djangoproject.com/ga/5.2/howto/custom-management-commands/
canonical: https://djangodocs.dev/ga/5.2/howto/custom-management-commands/
---
# Conas orduithe saincheaptha django-admin a chruthú

Is féidir le hiarratais a gcuid gníomhartha féin a chlárú le manage.py\`. Mar shampla, b'fhéidir gur mhaith leat gníomh manage.py a chur le haghaidh aip Django atá á dháileadh agat. Sa doiciméad seo, beimid ag tógáil ordú saincheaptha `closepoll` don iarratas `polls` óna:doc: teagorial@@\</intro/tutorial01\> .

Chun seo a dhéanamh, cuir eolaire ```bainistí/orduithe ``leis an bhfeidhmchlár. Cláróidh Django ordú `manage.py``` do gach modúl Python san eolaire sin nach dtosaíonn a ainm le béim. Mar shampla:

```text
polls/
    __init__.py
    models.py
    management/
        __init__.py
        commands/
            __init__.py
            _private.py
            closepoll.py
    tests.py
    views.py
```

Sa sampla seo, cuirfear an t-ordú closepoll\` ar fáil d'aon tionscadal a chuimsíonn an feidhmchlár `polls` in:setting: INSTALLED\_APPS.

Ní bheidh an modúl `_private.py` ar fáil mar ordú bainistíochta.

\<ref-basecommand-subclasses\>Níl ach riachtanas amháin ag an modúl `closepoll.py` \- ní mór dó aicme `Command` a shainmhíniú a leathnaí:class: BaseCommand nó ceann dá: ref: fo-aicmí .

> **Scripteanna neamhspleácha**
>
> Tá orduithe bainistíochta saincheaptha an-úsáideach chun scripteanna neamhspleácha a rith nó le haghaidh scripteanna a fhorghníomhaítear go tréimhsiúil ó crontab UNIX nó ó phainéal rialaithe tascanna sceidealta Windows.

Chun an t-ordú a chur i bhfeidhm, cuir in eagar polls/management/commands/closepoll.py\` chun cuma seo a leanas:

```
from django.core.management.base import BaseCommand, CommandError
from polls.models import Question as Poll

class Command(BaseCommand):
    help = "Closes the specified poll for voting"

    def add_arguments(self, parser):
        parser.add_argument("poll_ids", nargs="+", type=int)

    def handle(self, *args, **options):
        for poll_id in options["poll_ids"]:
            try:
                poll = Poll.objects.get(pk=poll_id)
            except Poll.DoesNotExist:
                raise CommandError('Poll "%s" does not exist' % poll_id)

            poll.opened = False
            poll.save()

            self.stdout.write(
                self.style.SUCCESS('Successfully closed poll "%s"' % poll_id)
            )
```

> **Note**
>
> Nuair a bhíonn orduithe bainistíochta á úsáid agat agus is mian leat aschur consól a sholáthar, ba chóir duit scríobh chuig self.stdout\` agus `self.stderr`, in ionad priontáil chuig stdout\` agus stderr\` go díreach. Trí na seachfhálaí seo a úsáid, bíonn sé i bhfad níos éasca d'ordú saincheaptha a thástáil. Tabhair faoi deara freisin nach gá duit deireadh a chur le teachtaireachtaí le carachtar líne nua, cuirfear leis go huathoibríoch, mura sonraíonn tú an paraiméadar deireadh :
>
> ```
> self.stdout.write("Unterminated line", ending="")
> ```

\<poll\_ids\>Is féidir an t-ordú saincheaptha nua a ghlaoch ag baint úsáide as python manage.py closepoll .

Tógann an modh ````handle () ```poll_ids```` amháin nó níos mó agus leagann sé `poll.opened` go `False` do gach ceann amháin. Má thug an t-úsáideoir tagairt do aon vótaíochtaí nach bhfuil ann, ardaítear a:exc: CommandError. Níl an tréith `poll.opened` ann in:doc: tutorial agus cuireadh leis `Polls.Models.Question` don sampla seo\</intro/tutorial02\>.

## Ag glacadh le hargóint

D'fhéadfaí an closepoll\` céanna a mhodhnú go héasca chun vótaíocht ar leith a scriosadh in ionad é a dhúnadh trí ghlacadh le roghanna líne ordaithe breise. Is féidir na roghanna saincheaptha seo a chur leis sa modh:: ~BaseCommand.add\_Arguments mar seo:

```
class Command(BaseCommand):
    def add_arguments(self, parser):
        # Positional arguments
        parser.add_argument("poll_ids", nargs="+", type=int)

        # Named (optional) arguments
        parser.add_argument(
            "--delete",
            action="store_true",
            help="Delete poll instead of closing it",
        )

    def handle(self, *args, **options):
        # ...
        if options["delete"]:
            poll.delete()
        # ...
```

Tá an rogha (`scrios` inár sampla) ar fáil i bparaiméadar dict na roghanna den mhodh láimhseála. Féach doiciméadú Python: py:mod: argparse le haghaidh tuilleadh eolais faoi úsáid add\_argument .

Chomh maith le bheith in ann roghanna líne ordaithe saincheaptha a chur leis, is féidir le gach: doc: ordaithe bainistíochta \`glacadh le roinnt roghanna réamhshocraithe mar: rogha: \`--verbosity\`\</ref/django-admin\> agus:option: \`--traceback.

## Orduithe bainistíochta agus áitiúla

De réir réamhshocraithe, déantar orduithe bainistíochta a fhorghníomhú leis an locale gníomhach reatha.

Más gá, ar chúis éigin, d'ordú bainistíochta saincheaptha a rith gan áit ghníomhach (mar shampla, chun ábhar aistrithe a chosc ó chur isteach sa bhunachar sonraí), díghníomhachtaigh aistriúcháin ag baint úsáide as an maisitheoir `@no_translations` ar do mhodh:

```
from django.core.management.base import BaseCommand, no_translations

class Command(BaseCommand):
    ...

    @no_translations
    def handle(self, *args, **options): ...
```

Ós rud é go dteastaíonn rochtain ar shocruithe cumraithe chun aistriúchán a dhíghníomhachtú, ní féidir an maisitheoir a úsáid le haghaidh orduithe a oibríonn gan socruithe cumraithe.

## Tástáil

\<topics-testing-management-commands\>Is féidir faisnéis faoi conas orduithe bainistíochta saincheaptha a thástáil in:ref: testing docs .

## Orduithe suntasacha

Cláraíonn Django na horduithe ionsuite agus ansin déanann sé cuardach ar orduithe in:setting: INSTALLED\_APPS ar ais. Le linn an chuardaigh, má dhúbailíonn ainm ordaithe ordú cláraithe cheana féin, cuireann an t-ordú nua-aimsithe ar an gcéad cheann.

Is é sin le rá, chun ordú a shárú, caithfidh an t-ainm céanna a bheith ag an ordú nua agus caithfidh a aip a bheith roimh aip an ordaithe athsháraithe in:setting: INSTALLED\_APPS.

Is féidir orduithe bainistíochta ó aipeanna tríú páirtí a cuireadh athshealbhú gan aon ghnó a chur ar fáil faoi ainm nua trí ordú nua a chruthú i gceann de na feidhmchláir do thionscadail (ordaithe roimh an aip tríú páirtí in:setting: INSTALLED\_APPS) a allmhairíonn Ordú den ordú sáraithe.

## Rudaí ordaithe

#### `class BaseCommand`

An bunaicme as a dtagann gach ordú bainistíochta sa deireadh.

\<ref-basecommand-subclasses\>Úsáid an rang seo más mian leat rochtain a fháil ar na meicníochtaí go léir a pháirsíonn na hargóintí líne ordaithe agus a oibríonn amach cén cód atá le glaoch mar fhreagra; mura gá duit aon cheann den iompar sin a athrú, smaoinigh ar cheann díobh a úsáid: ref: fo-aicmí .

Éilíonn fo-aicmiú an ranga:class: BaseCommand go gcuirfidh tú an modh: ~BaseCommand.Handle i bhfeidhm.

### Tréithe

\<ref-basecommand-subclasses\>Is féidir na tréithe go léir a shocrú i do rang díorthaithe agus is féidir iad a úsáid in:class: BaseCommand subclass.

#### `BaseCommand.help`

\<command\>Cur síos gairid ar an ordú, a phriontálfar sa teachtaireacht chabhrach nuair a ritheann an t-úsáideoir an t-ordú python manage.py help .

#### `BaseCommand.missing_args_message`

Má shainmhíníonn d'ordú argóintí seasaimh éigeantacha, is féidir leat an earráid teachtaireachta a thug ar ais a shaincheapadh i gcás argóint Is é an réamhshocrú aschur ag:py:mod: argparse (“ró-bheag argóintí”).

#### `BaseCommand.output_transaction`

Boolean a thugann le fios an n-aschuireann an t-ordú ráitis SQL; má tá `True`, filteofar an t-aschur go huathoibríoch le ```BEGIN; ``agus ``COMMIT;```. Is é luach réamhshocraithe `False`.

#### `BaseCommand.requires_migrations_checks`

Boolean; má tá `True`, priontáil an t-ordú rabhadh mura n-oireann an tacar imirce ar an diosca leis na himirce sa bhunachar sonraí. Ní chuireann rabhadh cosc ar an ordú a fhorghníomhú. Is é luach réamhshocraithe `False`.

#### `BaseCommand.requires_system_checks`

Liosta nó cúpla clibeanna, m.sh. `[Tags.staticFiles, tags.Models]`. Seiceálfar seiceálacha córas:ref: cláraithe sna clibeanna roghnaithe \<registering-labeling-checks\>\`le haghaidh earráidí sula ndéantar an t-ordú a fhorghníomhú. Is féidir an luach \`'\_\_all\_\_'\`\` a úsáid chun a shonrú gur chóir gach seiceáil chórais a dhéanamh. Is é luach réamhshocraithe `'__all__'`.

#### `BaseCommand.style`

Tréith sampla a chuidíonn le aschur daite a chruthú agus tú ag scríobh chuig `stdout` nó `stderr`. Mar shampla:

```
self.stdout.write(self.style.SUCCESS("..."))
```

Féach: tagairt: syntax-coloring chun foghlaim conas an pailéad dathanna a mhodhnú agus na stíleanna atá ar fáil a fheiceáil (bain úsáid as leaganacha uachtaracha de na “róil” a thuairiscítear sa chuid sin).

Má théann tú ar an rogha:: - no-color\` agus tú ag rith d'ordú, cuirfidh gach glao self.style () ar ais an sreang bunaidh gan daite.

#### `BaseCommand.suppressed_base_arguments`

Na roghanna ordaithe réamhshocraithe chun cosc a chur san aschur cabhrach. Ba chóir go mbeadh sé seo ina shraith d'ainmneacha roghanna (m.sh. `` `- verbosity` ``). Tá na luachanna réamhshocraithe do na roghanna faoi chosc ritheanta fós.

### Modhanna

[`BaseCommand`](#django.core.management.BaseCommand) has a few methods that can be overridden but only
the [`handle()`](#django.core.management.BaseCommand.handle) method must be implemented.

> **Tógálaí a chur i bhfeidhm i bhfo-aicme**
>
> Má chuireann tú `__init__` i do fho-aicme de:class: BaseCommand, ní mór duit glao:class: BaseCommand `__init__`:
>
> ```
> class Command(BaseCommand):
>     def __init__(self, *args, **kwargs):
>         super().__init__(*args, **kwargs)
>         # ...
> ```

#### `BaseCommand.create_parser(prog_name, subcommand, **kwargs)`

Filleann sé sampla `CommandParser`, arb ion:class: ~ArgParse.ArgumentParser fo-aicme le cúpla saincheapadh do Django.

Is féidir leat an sampla a shaincheapadh tríd an modh seo a shárú agus glaoch ar ``` super () `` ``` le paraiméadair kwargs o:class: ~ArgParse.ArgumentParser.

#### `BaseCommand.add_arguments(parser)`

Pointe iontrála chun argóintí parser a chur chun argóintí líne ordaithe a chuirtear chuig an ordú a láimhseáil Ba cheart d'orduithe saincheaptha an modh seo a shárú chun argóintí suímh agus roghnacha a ghlacann an t-ordú leis a chur leis Ní gá glaoch ar ```super () ``nuair a dhéantar `BaseCommand``` a fho-aicmiú go díreach.

#### `BaseCommand.get_version()`

Filleann sé an leagan Django, ar chóir go mbeadh sé ceart do gach ordú Django ionsuite. Is féidir le horduithe a sholáthraíonn an úsáideoir an modh seo a shárú chun a leagan féin ar ais.

#### `BaseCommand.execute(*args, **options)`

Déanann iarracht an t-ordú seo a fhorghníomhú, ag déanamh seiceálacha córais más gá (mar atá á rialú ag an tréith: attr: requires\_system\_checks). Má ardaíonn an t-ordú a:exc: CommandError, déantar é a idirghabháil agus a phriontáil chuig `stderr`.

> **Glaoch ar ordú bainistíochta i do chód**
>
> Níor chóir execute () \`\`a ghlaoch go díreach ó do chód chun ordú a fhorghníomhú. Úsáid: func: \`~django.core.management.call\_command ina ionad.

#### `BaseCommand.handle(*args, **options)`

An loighic iarbhír an ordaithe. Caithfidh fo-aicmí an modh seo a chur i bhfeidhm.

Féadfaidh sé teaghrán a chur ar ais a phriontáilfear chuig stdout\` (fillte le ```BEGIN; ``agus ``COMMIT;``` más: attr: output\_transaction `` `True ``).

#### `BaseCommand.check(app_configs=None, tags=None, display_num_errors=False, include_deployment_checks=False, fail_level=checks.ERROR, databases=None)`

Úsáideann sé creat seiceála an chórais chun an tionscadal iomlán Django a iniúchadh le haghaidh fadhbanna a Ardaítear fadhbanna tromchúiseacha mar a:exc: Commanderror; aschur rabhaidh chuig stderr\`; aschuirtear mionfhógraí chuig stdout\`.

Má tá `` `app_configs `` agus tags\` araon ``` `None ``, déantar gach seiceáil chórais seachas seiceálacha imscartha agus seiceálacha a bhaineann le bunachar sonraí. Is féidir le `tags ``` a bheith ina liosta clibeanna seiceála, cosúil le ```comhoiriúnacht ``nó `samhlacha```.

Is féidir leat `include_deployment_checks=true` a rith chun seiceálacha imscartha a dhéanamh freisin, agus liosta d'ainmneacha bunachar sonraí sna databases\` chun seiceálacha a bhaineann le bunachar sonraí a reáchtáil ina gcoinne.

#### `BaseCommand.get_check_kwargs(options)`

> **New in Django 5.2**

Supplies kwargs for the call to [`check()`](#django.core.management.BaseCommand.check), including transforming the
value of [`requires_system_checks`](#django.core.management.BaseCommand.requires_system_checks) to the `tag` kwarg.

Override this method to change the values supplied to [`check()`](#django.core.management.BaseCommand.check). For
example, to opt into database related checks you can override
`get_check_kwargs()` as follows:

```
def get_check_kwargs(self, options):
    kwargs = super().get_check_kwargs(options)
    return {**kwargs, "databases": [options["database"]]}
```

### Fo-aicmí `BaseCommand`

#### `class AppCommand`

Ordú bainistíochta a thógann lipéad feidhmchláir suiteáilte amháin nó níos mó mar argóintí, agus a dhéanann rud éigin le gach ceann acu.

Seachas: meth: ~BaseCommand.handle a chur i bhfeidhm, ní mór do fho-aicmiúint:meth: ~appCommand.handle\_app\_config a chur i bhfeidhm, a ghlaofar uair amháin do gach feidhmchlár.

#### `AppCommand.handle_app_config(app_config, **options)`

Déan gníomhartha an ordaithe le haghaidh `app_config`, a bheidh an:class: ~django.apps.appconfig sampla a fhreagraíonn do lipéad feidhmchláir a thugtar ar an líne ordaithe.

#### `class LabelCommand`

Ordú bainistíochta a thógann argóint treallach amháin nó níos mó (lipéid) ar an líne ordaithe, agus a dhéanann rud éigin le gach ceann acu.

Seachas: meth: ~BaseCommand.Handle a chur i bhfeidhm, ní mór do fho-aicmi:meth: ~labelCommand.handle\_label a chur i bhfeidhm, a ghlaofar uair amháin do gach lipéad.

#### `LabelCommand.label`

Sreang a chuireann síos ar na hargóintí treallacha a chuirtear chuig an ordú Úsáidtear an teaghrán i dtéacs úsáide agus teachtaireachtaí earráide an ordaithe. Réamhshocraithe go `` `lipéad ``.

#### `LabelCommand.handle_label(label, **options)`

Déan gníomhartha an ordaithe le haghaidh lipéad\`, arb é an teaghrán mar a thugtar ar an líne ordaithe.

### Eisceachtaí ordaithe

#### `exception CommandError(returncode=1)`

Rang eisceachta a léiríonn fadhb agus ordú bainistíochta á fhorghníomhú.

Má ardaítear an eisceacht seo le linn ordú bainistíochta a fhorghníomhú ó chonsól líne ordaithe, gabhfar é agus déanfar é teachtaireacht earráide priontáilte go deas chuig an sruth aschuir chuí (ie, stderr \`); mar thoradh air sin, is é an eisceacht seo a ardú (le cur síos ciallmhar ar an earráid) an bealach is fearr chun a léiriú go bhfuil rud éigin mícheart ag forghníomhú ordaithe. Glacann sé leis an argóint roghnach returncode chun an stádas imeachta a shaincheapadh don ordú bainistíochta imeacht leis, ag baint úsáide as: func: sys.exit.

Má ghlaofar ordú bainistíochta ón gcód trí:func: ~django.core.management.call\_command, is fútsa atá sé an eisceacht a ghabháil nuair is gá.
