---
title: "Suíomh riaracháin Django"
version: 6.1
locale: ga
source: https://docs.djangoproject.com/ga/6.1/ref/contrib/admin/
canonical: https://djangodocs.dev/ga/6.1/ref/contrib/admin/
---
# Suíomh riaracháin Django

Ceann de na codanna is cumhachtaí de Django ná an comhéadan riaracháin uathoibríoch. Léann sé meiteashonraí ó do mhúnlaí chun comhéadan tapa, samhail-lárnach a sholáthar inar féidir le húsáideoirí iontaofa ábhar ar do shuíomh a bhainistiú. Tá úsáid mholta an riaracháin teoranta d'uirlis bhainistíochta inmheánach eagraíochta. Níl sé beartaithe chun do cheann tosaigh iomlán a thógáil timpeall.

Tá go leor crúcaí ag an riarachán le saincheaptha, ach bí cúramach ort iarracht a dhéanamh na crúcaí sin a úsáid go heisiach Más gá duit comhéadan níos dírithe ar phróiseas a sholáthar a chuireann achoimir sonraí cur chun feidhme táblaí agus réimsí bunachar sonraí, is dócha go bhfuil sé in am do thuairimí féin a scríobh.

Sa doiciméad seo pléimid conas comhéadan riaracháin Django a ghníomhachtú, a úsáid agus a shaincheapadh.

## Forbhreathnú

Tá an riarachán cumasaithe sa teimpléad tionscadail réamhshocraithe a úsáideann: djadmin: startproject.

Mura bhfuil an teimpléad tionscadail réamhshocraithe á úsáid agat, seo na riachtanais:

1. Cuir `django.contrib.admin'` agus a spleáchais -:mod: django.contrib.auth, :mod: django.contrib.contenttypes, :mod: django.contrib.messages, agus:mod: django.contrib.sessions \- le duit:setting:  socrú.
2. \<TEMPLATES-OPTIONS\>Cumraigh a:class: ~django.template.backends.django.djangoTemplates cúltaca i d:setting: TEMPLATES socrú le `django.template.context_processors.request`, django.contrib.auth.context\_processors.auth\`, agus `django.contrimessb.ages.context_processors.messages` sa rogha 'context\_processors' de:setting: OPTIONS .
3. Má tá an socrú:setting: MIDDLEWARE saincheaptha agat, :class: django.contrib.sessions.middleware.sessionMiddleware, :class: django.contrib.auth.middleware.AuthenticationMiddleware, agus:class: django.contrib.messages.middleware.messageMiddleware.
4. \<hooking-adminsite-to-urlconf\>:ref: Ceangail URLanna an riaracháin isteach i do URLConf .

Tar éis duit na céimeanna seo a ghlacadh, beidh tú in ann an suíomh riaracháin a úsáid trí chuairt a thabhairt ar an URL a chuir tú isteach air (`/admin/`, de réir réamhshocraithe).

Más gá duit úsáideoir a chruthú le logáil isteach leis, bain úsáid as an ordú:djadmin: createsuperuser. De réir réamhshocraithe, éilíonn logáil isteach sa riarachán go bhfuil an tréith: attr: ~.user.is\_staff socraithe go `True` ag an úsáideoir.

Faoi dheireadh, socraigh cé acu de na samhlacha d'iarratais ba chóir a bheith in-eagarthóireachta sa chomhéadan riaracháin. Maidir le gach ceann de na samhlacha sin, cláraigh iad leis an riarachán mar a thuairiscítear in:class: ModelAdmin.

### Ábhair eile

- [gníomhartha riaracháin](/ga/6.1/ref/contrib/admin/actions/)
- [`ModelAdmin` Scagairí Liosta](/ga/6.1/ref/contrib/admin/filters/)
- [Gineadóir doiciméadaithe riaracháin Django](/ga/6.1/ref/contrib/admin/admindocs/)
- [Saincheaptha JavaScript sa riarachán](/ga/6.1/ref/contrib/admin/javascript/)

> **See also**
>
> Le haghaidh faisnéise maidir le freastal ar na comhaid statacha (íomhánna, JavaScript, agus CSS) a bhaineann leis an riarachán atá i dtáirgeadh, féach:ref: serving-files.
>
> Ag fadhbanna agat? Bain triail as: doc: /faq/admin .

## Modeladmin rudaí

#### `class ModelAdmin`

Is é an rang `ModelAdmin` léiriú samhail sa chomhéadan riaracháin. De ghnáth, stóráiltear iad seo i gcomhad darb ainm `admin.py` i d'iarratas. Breathnaímid ar shampla den `ModelAdmin`:

```
from django.contrib import admin
from myapp.models import Author

class AuthorAdmin(admin.ModelAdmin):
    pass

admin.site.register(Author, AuthorAdmin)
```

> **An dteastaíonn réad ModelAdmin uait ar chor ar bith?**
>
> Sa sampla roimhe seo, ní shainmhíníonn an rang `ModelAdmin` aon luachanna saincheaptha (fós). Mar thoradh air sin, cuirfear an comhéadan riaracháin réamhshocraithe ar fáil. Má tá tú sásta leis an gcomhéadan riaracháin réamhshocraithe, ní gá duit réad ModelAdmin\` a shainiú ar chor ar bith - is féidir leat an rang samhail a chlárú gan cur síos ModelAdmin\` a sholáthar. D'fhéadfaí an sampla roimhe seo a shimpliú go:
>
> ```
> from django.contrib import admin
> from myapp.models import Author
>
> admin.site.register(Author)
> ```

### An maisitheoir `clár`

#### `register(*models, site=django.contrib.admin.sites.site)`

Tá maisitheoir ann freisin chun do ranganna ModelAdmin\` a chlárú:

```
from django.contrib import admin
from .models import Author

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    pass
```

Tugtar rang samhail amháin nó níos mó dó chun clárú leis an `ModelAdmin`. Má tá saincheap:class: AdminSite á úsáid agat, pas é ag baint úsáide as an argóint eochairfhocal láithreach\`:

```
from django.contrib import admin
from .models import Author, Editor, Reader
from myproject.admin_site import custom_admin_site

@admin.register(Author, Reader, Editor, site=custom_admin_site)
class PersonAdmin(admin.ModelAdmin):
    pass
```

Ní féidir leat an maisitheoir seo a úsáid má chaithfidh tú tagairt a dhéanamh do rang riaracháin samhail ina mhodh \_\_init\_\_ () , m.sh. \`super (PersonAdmin, self). \_\_init\_\_ (\*args, \*\*kwargs) \`. Is féidir leat super () a úsáid. \_\_init\_\_ (args, kwargs) .

### Faighneadh comhaid riaracháin

Nuair a chuireann tú `django.contrib.admin` i do shuíomh: INSTALLED\_APPS, lorgaíonn Django modúl admin go huathoibríoch i ngach feidhmchlár agus déanann Django é a allmhairiú.

#### `class apps.AdminConfig`

This is the default [`AppConfig`](/ga/6.1/ref/applications/#django.apps.AppConfig) class for the admin.
It calls [`autodiscover()`](#django.contrib.admin.autodiscover) when Django starts.

#### `class apps.SimpleAdminConfig`

This class works like [`AdminConfig`](#django.contrib.admin.apps.AdminConfig),
except it doesn't call [`autodiscover()`](#django.contrib.admin.autodiscover).

#### `default_site`

Conair allmhairithe poncanach chuig rang an láithreáin riaracháin réamhshocraithe nó chuig glaoch a thugann sampla láithreáin ar ais. Réamhshocraithe go django.contrib.admin.sites.adminsite'. Féach: ref: \`overriding-default-admin-site le húsáid.

#### `autodiscover()`

Déanann an fheidhm seo iarracht modúl admin a allmhairiú i ngach feidhmchlár suiteáilte. Táthar ag súil go gclárfaidh modúil den sórt sin samhlacha leis an riarach

De ghnáth ní bheidh ort an fheidhm seo a ghlaoch go díreach mar: class: ~django.contrib.admin.apps.adminConfig glaonn sé nuair a thosaíonn Django.

Má tá tú ag úsáid saincheaptha `AdminSite`, is coitianta na fo-aicmí `ModelAdmin` go léir a iompórtáil isteach i do chód agus iad a chlárú chuig an saincheaptha `AdminSite`. Sa chás sin, d'fhonn uathoibríoch a dhíchumasú, ba chóir duit django.contrib.admin.apps.simpleAdminConfig'\` a chur in ionad django.contrib.admin' i do shuíomh: INSTALLED\_APPS.

### Roghanna `ModelAdmin`

Tá an `ModelAdmin` an-solúbtha. Tá roinnt roghanna aige chun déileáil leis an gcomhéadan a shaincheapadh. Sainmhínítear gach rogha ar an bhfo-aicme `ModelAdmin`:

```
from django.contrib import admin

class AuthorAdmin(admin.ModelAdmin):
    date_hierarchy = "pub_date"
```

#### `ModelAdmin.actions`

Liosta de na gníomhartha atá le cur ar fáil ar an leathanach liosta athraithe. Féach: doc: /ref/contrib/admin/actions le haghaidh sonraí.

#### `ModelAdmin.actions_on_top`

#### `ModelAdmin.actions_on_bottom`

Controls where on the admin changelist page the actions bar appears. By
default, the admin changelist displays actions at the top of the page
(`actions_on_top = True; actions_on_bottom = False`).

#### `ModelAdmin.actions_selection_counter`

Rialaíonn sé an bhfuil cuntar roghnúcháin ar taispeáint in aice leis an anuas gníomhaíochta. De réir réamhshocraithe, taispeánfaidh an liosta athraithe riaracháin é (`actions_selection_counter = True`).

#### `ModelAdmin.date_hierarchy`

Socraigh `date_hierarchy` ar ainm `DateField` nó `DateTimeField` i do mhúnla, agus beidh nascleanúint drilldown bunaithe ar dáta-bhunaithe ag an réimse sin san leathanach liosta athraithe.

Sampla:

```
date_hierarchy = "pub_date"
```

Is féidir leat réimse a shonrú freisin ar mhúnla gaolmhar ag baint úsáide as an lorg `__`, mar shampla:

```
date_hierarchy = "author__pub_date"
```

Déanfaidh sé seo é féin a dhaonrú go cliste bunaithe ar na sonraí atá ar fáil, m.sh. má tá na dátaí go léir i mí amháin, taispeánfaidh sé an druileáil síos ar leibhéal lae amháin.

> **Note**
>
> \<django.db.models.query.QuerySet.datetimes\>Úsáideann `date_hierarchy`: meth: QuerySet.dateTimes () go hinmheánach. \<USE\_TZ\>Féach dá dhoiciméadú le do thoil le haghaidh roinnt rabhaidh nuair a chumasaítear tacaíocht crios ama (:setting: USE\_TZ = True ).

#### `ModelAdmin.empty_value_display`

Sáraíonn an tréith seo an luach taispeána réamhshocraithe do réimsí an taifead atá folamh (```None ``, teaghrán folamh, srl.). Is é an luach réamhshocraithe ``-``` (sraigh). Mar shampla:

```
from django.contrib import admin

class AuthorAdmin(admin.ModelAdmin):
    empty_value_display = "-empty-"
```

Is féidir leat `empty_value_display` a shárú freisin do gach leathanach riaracháin le:attr: adminsite.empty\_value\_display, nó le haghaidh réimsí ar leith mar seo:

```
from django.contrib import admin

class AuthorAdmin(admin.ModelAdmin):
    list_display = ["name", "title", "view_birth_date"]

    @admin.display(empty_value="???")
    def view_birth_date(self, obj):
        return obj.birth_date
```

#### `ModelAdmin.exclude`

Ba chóir go mbeadh an tréith seo, má thugtar, ina liosta d'ainmneacha réimse le eisiamh ón bhfoirm.

Mar shampla, déanaimis machnamh ar an tsamhail seo a leanas:

```
from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)
    title = models.CharField(max_length=3)
    birth_date = models.DateField(blank=True, null=True)
```

Más mian leat foirm don tsamhail `Údar` nach n-áirítear ach na réimsí `ainm` agus ```teideal ``, sonrófaí ``réimsí``` réimsí ```nó ``eisiam``` mar seo:

```
from django.contrib import admin

class AuthorAdmin(admin.ModelAdmin):
    fields = ["name", "title"]

class AuthorAdmin(admin.ModelAdmin):
    exclude = ["birth_date"]
```

Ós rud é nach bhfuil ach trí réimse ag an tsamhail Údair, ```ainm ``, `teideal```, agus dáta\_bhreith\`, beidh na réimsí céanna go díreach sna foirmeacha a eascraíonn as na dearbhuithe thuas.

#### `ModelAdmin.fields`

Úsáid an rogha réimsí chun athruithe leagan amach simplí a dhéanamh sna foirmeacha ar na leathanaigh “cuir” agus “athraigh” amhail fo-thacar de réimsí atá ar fáil a thaispeáint, a n-ord a mhodhnú, nó iad a ghrúpáil i sraitheanna. Mar shampla, d'fhéadfá leagan níos simplí den fhoirm riaracháin a shainiú don tsamhail:class: django.contrib.flatpages.models.flatpage mar seo a leanas:

```
class FlatPageAdmin(admin.ModelAdmin):
    fields = ["url", "title", "content"]
```

Sa sampla thuas, ní thaispeánfar ach na réimsí ```url ``, `teideal``` agus ``ábh`, sa fhoirm, go seicheamhach. Is féidir luachanna a shainmhínítear in:attr: `ModelAdmin.ReadOnly_Fields` a bheith i `fields`` le taispeáint mar léite amháin.

Le haghaidh riachtanais leagan amach níos casta, féach an rogha: attr: ~ModelAdmin.FieldSets.

Glacann an rogha `fields` leis na cineálacha céanna luachanna amha:attr: ~ModelAdmin.list\_display, ach amháin nach nglactar le glaonna agus `__` cuardaigh do réimsí gaolmhara. Ní úsáidfear ainmneacha modhanna riaracháin samhail agus samhail ach amháin má tá siad liostaithe in:attr: ~ModelAdmin.ReadOnly\_Fields.

Chun réimsí iolracha a thaispeáint ar an líne chéanna, fillte na réimsí sin ina dtuple féin. Sa sampla seo, taispeánfar na réimsí `url` agus ```teideal ``ar an líne chéanna agus taispeánfar an réimse ``content``` faoina bhun ar a líne féin:

```
class FlatPageAdmin(admin.ModelAdmin):
    fields = [("url", "title"), "content"]
```

> **Mearbhall féideartha leis an rogha ModelAdmin.FieldSets**
>
> Níor chóir an rogha `fields` seo a mheascadh leis an eochair foclóra `fields` atá laistigh den rogha: attr: ~ModelAdmin.FieldSets, mar a thuairiscítear sa chéad chuid eile.

If neither `fields` nor [`fieldsets`](#django.contrib.admin.ModelAdmin.fieldsets) options are
present, Django will default to displaying each field that isn't an
`AutoField` and has `editable=True`, in a single fieldset, in the same
order as the fields are defined in the model, followed by any fields
defined in [`readonly_fields`](#django.contrib.admin.ModelAdmin.readonly_fields).

#### `ModelAdmin.fieldsets`

Socraigh `fieldsets` chun leagan amach na leathanaigh riaracháin “cuir” agus “athraigh” a rialú.

\<fieldset\>Is liosta de 2-tuples é fieldsets, ina léiríonn gach 2-tuple \`\` ar an leathanach foirm riaracháin. (Is “cuid\<fieldset\>” den fhoirm é a .)

Tá na 2-tuples i bhformáid `(ainm, roghanna réimse)`, ina bhfuil ```ainm ``teaghrán a léiríonn teideal an tacar réimse agus is foclóir faisnéise faoin tacar réimse é `field_options```, lena n-áirítear liosta réimsí atá le taispeáint ann.

Sampla iomlán, tógtha ón múnla:class: django.contrib.flatpages.models.flatpage:

```
from django.contrib import admin

class FlatPageAdmin(admin.ModelAdmin):
    fieldsets = [
        (
            None,
            {
                "fields": ["url", "title", "content", "sites"],
            },
        ),
        (
            "Advanced options",
            {
                "classes": ["collapse"],
                "fields": ["registration_required", "template_name"],
            },
        ),
    ]
```

Mar thoradh air seo tá leathanach riaracháin a bhfuil cuma air:

![](ref/contrib/admin/_images/fieldsets.png)

Mura bhfuil roghanna `fieldsets` nor:attr: ~ModelAdmin.fields i láthair, réamhshocróidh Django gach réimse nach `autofield` a thaispeáint agus a bhfuil `Editable=True`, i tacar réimse amháin, san ord céanna agus atá na réimsí sainmhínithe sa tsamhail.

Is féidir leis na heochracha seo a leanas a bheith ag an bhfoclóir field\_options\`:

- **réimsí \`\`**

    Liosta nó tiúpla d'ainmneacha réimse le taispeáint sa tacar réimse seo. Tá an eochair seo ag teastáil.

    Sampla:

    ```
    {
        "fields": ["first_name", "last_name", "address", "city", "state"],
    }
    ```

    Mar is amhlaidh leis an rogha: attr: ~ModelAdmin.Fields, chun réimsí iolracha a thaispeáint ar an líne chéanna, timpail na réimsí sin ina dtuple féin. Sa sampla seo, taispeánfar na réimsí `first_name` agus `last_name` ar an líne chéanna:

    ```
    {
        "fields": [("first_name", "last_name"), "address", "city", "state"],
    }
    ```

    Is féidir luachanna a shainmhínítear in:attr: ~ModelAdmin.ReadOnly\_Fields a bheith i fields\` le taispeáint mar léite amháin.

    Má chuireann tú ainm inghlaonta le fields\`, tá feidhm ag an riail chéanna leis an roghna:attr: ~ModelAdmin.Fields: ní mór an glaoch a liostáil in:attr: ~ModelAdmin.Readonly\_Fields.
- **`ranga`**

    A list or tuple containing extra CSS classes to apply to the fieldset.
    This can include any custom CSS class defined in the project, as well
    as the CSS class provided by Django: `collapse`.

    Sampla:

    ```
    {
        "classes": ["collapse"],
    }
    ```

    Fieldsets with a name and the `collapse` style will be initially
    collapsed, using an expandable widget with a toggle for switching
    their visibility.

    > **Changed in Django 6.1**
    >
    > The `wide` class has been removed, as it was made obsolete by the
    > new admin layout.
- **`` `Tuairisc ``**

    Sraith téacs breise roghnach le taispeáint ag barr gach tacar réimse, faoi cheannteideal an tacar réimse.

    Tabhair faoi deara go bhfuil an luach seo\* éalaithe ag HTML nuair a thaispeántar é sa chomhéadan riaracháin. Ligeann sé seo duit HTML a áireamh más mian leat. Nó is féidir leat gnáthtéacs agus:func: django.utils.html.escape a úsáid chun éalú aon charachtair speisialta HTML.

> **TabularInline has limited
> support for fieldsets**
>
> Tá feidhmiúlacht theoranta ag baint úsáide as fieldsets\` le: class: ~django.contrib.admin.tabularInline. Is féidir leat a shonrú cé na réimsí a thaispeánfar agus a n-ord laistigh den leagan amach `TabularInline` trí réimsí \`\`a shainiú sa fhoclóir \`field\_options\`.
>
> Ní thacaítear le gach gné eile. Áirítear leis seo úsáid `ainm` chun teideal a shainiú do ghrúpa réimsí.

#### `ModelAdmin.filter_horizontal`

\<select multiple\>De réir réamhshocraithe, taispeántar a:class: ~django.db.models.manyTomanyField ar an suíomh riaracháin le . Mar sin féin, is féidir go mbeadh sé deacair boscaí ilroghnaithe a úsáid agus go leor míreanna á roghnú. Ag cur a:class: ~django.db.models.manyToManyField leis an liosta seo úsáidfear comhéadan “scagaire” JavaScript neamh-neamhbhraith ina ionad sin a cheadaíonn cuardach laistigh de na roghanna. Tá na roghanna neamhroghnaithe agus roghnaithe le feiceáil i dhá bhosca taobh le taobh. Féach: attr: ~ModelAdmin.filter\_vertical chun comhéadan ingearach a úsáid.

#### `ModelAdmin.filter_vertical`

Mar an gcéanna len:attr: ~ModelAdmin.filter\_Horizontal, ach úsáideann sé taispeáint ingearach den chomhéadan scagaire leis an mbosca roghanna neamhroghnaithe atá le feiceáil os cionn an bhosca na roghanna roghnaithe.

#### `ModelAdmin.form`

De réir réamhshocraithe cruthaítear `ModelForm` go dinimiciúil do do mhúnla. Úsáidtear é chun an fhoirm a chuirtear i láthair ar na leathanaigh cuirte/athraigh a chruthú. Is féidir leat do ModelForm \`\`féin a sholáthar go héasca chun aon iompar foirme réamhshocraithe ar na leathanaigh cuirte/athraithe a shárú. De rogha air sin, is féidir leat an fhoirm réamhshocraithe a shaincheapadh seachas ceann iomlán nua a shonrú tríd an modh: meth: \`ModelAdmin.get\_form a úsáid.

Mar shampla féach an rannáit:ref: admin-custom-validation.

> **Fág an tréith ``Meta.Model ``**
>
> Má shainmhíníonn tú an tréith `Meta.Model` ar a:class: ~Django.Forms.ModelForm, ní mór duit an tréith `Meta.Fields` a shainiú freisin (nó an tréith `Meta.Exclude`). Mar sin féin, ós rud é go bhfuil a bhealach féin ag an riarachán chun réimsí a shainiú, déanfar neamhaird ar an tréith Meta.fields'.
>
> Mura n-úsáidfear an ModelForm \`\`ach don riarachán, is é an réiteach is éasca an tréith \`Meta.Model\` a fhágáil, ós rud é go soláthróidh ```ModelAdmin` an tsamhail cheart le húsáid. De rogha air sin, is féidir leat `fields = [] ``a shocrú sa rang ``Meta``` chun an bailíochtú ar an ModelForm\` a shásamh.

> **Tá tosaíocht ag ModelAdmin.exclude**
>
> Má shainmhíníonn do ModelForm\` agus `ModelAdmin` rogha ```eisiamh ``ansin tá tosaíocht ag ``ModelAdmin```:
>
> ```
> from django import forms
> from django.contrib import admin
> from myapp.models import Person
>
>
> class PersonForm(forms.ModelForm):
>     class Meta:
>         model = Person
>         exclude = ["name"]
>
>
> class PersonAdmin(admin.ModelAdmin):
>     exclude = ["age"]
>     form = PersonForm
> ```
>
> Sa sampla thuas, eisifar an réimse “aois” ach cuirfear an réimse “ainm” san áireamh san fhoirm ghintear.

#### `ModelAdmin.formfield_overrides`

Soláthraíonn sé seo bealach tapa agus salach chun cuid de na roghanna: class: ~django.forms.field a shárú le húsáid sa riarachán. Is foclóir é formfield\_overrides\` ag mapáil rang réimse go dtí argóintí le dul chuig an réimse ag am tógála.

Ós rud é go bhfuil sé sin beagán teibí, féachaimis ar shampla nithiontach. Is é an úsáid is coitianta de `formfield_overrides` giuirléid saincheaptha a chur le haghaidh cineál áirithe réimse. \<textarea\>Mar sin, samhlaigh go bhfuil RichTextEditorWidget\` scríofa againn ar mhaith linn a úsáid le haghaidh réimsí móra téacs in ionad an réamhshocraithe . Seo mar a dhéanfaimis é sin:

```
from django.contrib import admin
from django.db import models

# Import our custom widget and our model from where they're defined
from myapp.models import MyModel
from myapp.widgets import RichTextEditorWidget

class MyModelAdmin(admin.ModelAdmin):
    formfield_overrides = {
        models.TextField: {"widget": RichTextEditorWidget},
    }
```

Tabhair faoi deara gurb é an eochair sa fhoclóir an rang réimse iarbhír, \* ní\* teaghrán. Is foclóir eile é an luach; cuirfear na hargóintí seo ar aghaidh chuig modh \_\_init\_\_ () réimse na foirme. Féach: doc: /ref/forms/api le haghaidh sonraí.

> **Warning**
>
> Más mian leat giuirléid saincheaptha a úsáid le réimse gaolmhar (i.e.:class: ~django.db.models.foreignKey nó:class: ~django.db.models.manyTomanyField), déan cinnte nár chuir tú ainm an réimse sin san áireamh i raw\_id\_fields\`, radio\_fields\`, nó auto\`complete\_fields\` aosaigh .
>
> Ní ligfidh `formfield_overrides` duit an giuirléid a athrú ar réimsí caidrimh a bhfuil `raw_id_fields`, radio\_fields\`, nó `autocomplete_fields` socraithe. Tá sé sin toisc go dtugann `raw_id_fields`, radio\_fields\`, agus `autocomplete_fields` le tuiscint giuirléidí saincheaptha dá gcuid féin.

#### `ModelAdmin.inlines`

Féach: aicme: rudaí inlineModelAdmin thíos chomh maith leis: meth: ModelAdmin.get\_formSets\_with\_inlines.

#### `ModelAdmin.list_display`

Socraigh `list_display` chun na réimsí a thaispeántar ar leathanach liosta athraithe an riaracháin a rialú.

Sampla:

```
list_display = ["first_name", "last_name"]
```

Mura socraíonn tú `list_display`, taispeánfaidh an suíomh riaracháin colún amháin a thaispeánann léiriú \_\_str\_\_ () de gach rud.

Tá cúig chineál luachanna ann is féidir a úsáid i `list_display`. Féadfaidh gach duine ach an ceann is simplí an maisitheoir: func: ~django.contrib.admin.display a úsáid, a úsáidtear chun an chaoi a gcuirtear an réimse i láthair a shaincheapadh:

- Ainm réimse samhail. Mar shampla:

  ```
  class PersonAdmin(admin.ModelAdmin):
      list_display = ["first_name", "last_name"]
  ```
- Ainm réimse gaolmhar, ag baint úsáide as an nótaí `__`. Mar shampla:

  ```
  class PersonAdmin(admin.ModelAdmin):
      list_display = ["city__name"]
  ```
- Inghlaonta a ghlacann le argóint amháin, an tsamhail samhail. Mar shampla:

  ```
  @admin.display(description="Name")
  def upper_case_name(obj):
      return f"{obj.first_name} {obj.last_name}".upper()

  class PersonAdmin(admin.ModelAdmin):
      list_display = [upper_case_name]
  ```
- Sreang a léiríonn modh `ModelAdmin` a ghlacann le argóint amháin, an tsamhail samhail. Mar shampla:

  ```
  class PersonAdmin(admin.ModelAdmin):
      list_display = ["upper_case_name"]

      @admin.display(description="Name")
      def upper_case_name(self, obj):
          return f"{obj.first_name} {obj.last_name}".upper()
  ```
- Sreang a léiríonn tréith nó modh samhail (gan aon argóintí riachtanacha). Mar shampla:

  ```
  from django.contrib import admin
  from django.db import models

  class Person(models.Model):
      name = models.CharField(max_length=50)
      birthday = models.DateField()

      @admin.display(description="Birth decade")
      def decade_born_in(self):
          decade = self.birthday.year // 10 * 10
          return f"{decade}’s"

  class PersonAdmin(admin.ModelAdmin):
      list_display = ["name", "decade_born_in"]
  ```

Cúpla cás speisialta le tabhairt faoi deara faoi `list_display`:

- Más `ForeignKey` an réimse, taispeánfaidh Django \_\_str\_\_ () den réad gaolmhar.
- Ní thacaítear le réimsí ``ManyTomanyField`, toisc go mbeadh sé sin i gceist leis sin ráiteas SQL ar leithligh a fhorghníomhú do gach sraith sa tábla. Más mian leat é seo a dhéanamh mar sin féin, tabhair modh saincheaptha do do mhúnla, agus cuir ainm an mhodha sin le `list_display`. (Féach thíos le haghaidh tuilleadh faoi mhodhanna saincheaptha i `list_display``.)
- Más `Booleanfield` é an réimse, taispeánfaidh Django deilbhín deas “tá”, “níl”, nó “anaithnid” in ionad `True`, False\`, nó `None`.
- Más modh den mhúnla é an teaghrán a thugtar, `ModelAdmin` nó inghlaoithe, éalóidh Django an t-aschur HTML de réir réamhshocraithe. Chun ionchur úsáideora a éalú agus do chlibeanna gan éalú féin a cheadú, bain úsáid as: func: ~django.utils.html.format\_html.

  Seo samhail iomlán sampla:

  ```
  from django.contrib import admin
  from django.db import models
  from django.utils.html import format_html

  class Person(models.Model):
      first_name = models.CharField(max_length=50)
      last_name = models.CharField(max_length=50)
      color_code = models.CharField(max_length=6)

      @admin.display
      def colored_name(self):
          return format_html(
              '<span style="color: #{};">{} {}</span>',
              self.color_code,
              self.first_name,
              self.last_name,
          )

  class PersonAdmin(admin.ModelAdmin):
      list_display = ["first_name", "last_name", "colored_name"]
  ```
- Mar a léirigh roinnt samplaí cheana féin, agus modh inghlaonta, modh samhail, nó modh ModelAdmin á úsáid agat, is féidir leat teideal an cholúin a shaincheapadh tríd an glaoch a fhilleadh leis an maisitheoir: :func: ~django.contrib.admin.display agus an argóint Description a rith.
- Más é luach réimse `None`, teaghrán folamh, nó athraitheach gan eilimintí, taispeánfaidh Django `-` (doic). Is féidir leat é seo a shárú le:attr: adminsite.empty\_value\_display:

  ```
  from django.contrib import admin

  admin.site.empty_value_display = "(None)"
  ```

  Is féidir leat úsáid freisin: attr: ModelAdmin.empty\_value\_display:

  ```
  class PersonAdmin(admin.ModelAdmin):
      empty_value_display = "unknown"
  ```

  Nó ar leibhéal réimse:

  ```
  class PersonAdmin(admin.ModelAdmin):
      list_display = ["name", "birth_date_view"]

      @admin.display(empty_value="unknown")
      def birth_date_view(self, obj):
          return obj.birth_date
  ```
- Más modh den tsamhail é an teaghrán a thugtar, `ModelAdmin` nó glaoch a thugann ar ais True\`, False\`, nó `None`, taispeánfaidh Django deilbhín deas “yes”, “níl”, nó “anaithnid” má fhilleann tú an modh leis an: func: ~django.contrib.admin. argóint olean\`\` leis an luach socraithe go `True`:

  ```
  from django.contrib import admin
  from django.db import models

  class Person(models.Model):
      first_name = models.CharField(max_length=50)
      birthday = models.DateField()

      @admin.display(boolean=True)
      def born_in_fifties(self):
          return 1950 <= self.birthday.year < 1960

  class PersonAdmin(admin.ModelAdmin):
      list_display = ["name", "born_in_fifties"]
  ```
- Tá an modh ```__str__ () ``chomh bailí i ``list_display``` agus aon mhodh samhail eile, mar sin tá sé go foirfe ceart go leor é seo a dhéanamh:

  ```
  list_display = ["__str__", "some_other_field"]
  ```
- De ghnáth, ní féidir eilimintí de list\_display\` nach réimsí bunachar sonraí iarbhír iad a úsáid i sórtáil (toisc go ndéanann Django an sórtáil go léir ag leibhéal an bhunachar sonraí).

  Mar sin féin, má léiríonn eilimint de list\_display\` réimse áirithe bunachar sonraí, is féidir leat an fíric seo a chur in iúl tríd an maisitheoir: func: ~django.contrib.admin.display a úsáid ar an modh, ag rith an argóint ordú :

  ```
  from django.contrib import admin
  from django.db import models
  from django.utils.html import format_html

  class Person(models.Model):
      first_name = models.CharField(max_length=50)
      color_code = models.CharField(max_length=6)

      @admin.display(ordering="first_name")
      def colored_first_name(self):
          return format_html(
              '<span style="color: #{};">{}</span>',
              self.color_code,
              self.first_name,
          )

  class PersonAdmin(admin.ModelAdmin):
      list_display = ["first_name", "colored_first_name"]
  ```

  Inseoidh an méid thuas do Django ordú ag an réimse `first_name` agus tú ag iarraidh a shórtáil de réir colorred\_first\_name\` sa riarachán.

  Chun ordú íslitheach a chur in iúl leis an argóint ordú is féidir leat réimír bhreitheach a úsáid ar ainm an réimse. Ag baint úsáide as an sampla thuas, bheadh an chuma seo mar seo:

  ```
  @admin.display(ordering="-first_name")
  def colored_first_name(self): ...
  ```

  Tacaíonn an argóint ordú le cuardaigh fiosrúcháin chun sórtáil de réir luachanna ar mhúnlaí gaolmhara. Cuimsíonn an sampla seo colún “céadainm an údair” i dtaispeáint an liosta agus ceadaíonn sé é a shórtáil de réir chéad ainm:

  ```
  class Blog(models.Model):
      title = models.CharField(max_length=255)
      author = models.ForeignKey(Person, on_delete=models.CASCADE)

  class BlogAdmin(admin.ModelAdmin):
      list_display = ["title", "author", "author_first_name"]

      @admin.display(ordering="author__first_name")
      def author_first_name(self, obj):
          return obj.author.first_name
  ```

  [Query expressions](/ga/6.1/ref/models/expressions/) may be used with the
  `ordering` argument:

  ```
  from django.db.models import Value
  from django.db.models.functions import Concat

  class Person(models.Model):
      first_name = models.CharField(max_length=50)
      last_name = models.CharField(max_length=50)

      @admin.display(ordering=Concat("first_name", Value(" "), "last_name"))
      def full_name(self):
          return self.first_name + " " + self.last_name
  ```
- Is féidir le heilimintí de list\_display\` a bheith ina airíonna freisin:

  ```
  class Person(models.Model):
      first_name = models.CharField(max_length=50)
      last_name = models.CharField(max_length=50)

      @property
      @admin.display(
          ordering="last_name",
          description="Full name of the person",
          boolean=False,
      )
      def full_name(self):
          return self.first_name + " " + self.last_name

  class PersonAdmin(admin.ModelAdmin):
      list_display = ["full_name"]
  ```

  Tabhair faoi deara go gcaithfidh `@property` a bheith os cionn `@display`. Má tá an seanbhealach á úsáid agat - ag socrú na tréithe a bhaineann le taispeáint go díreach seachas an maisitheoir: func: ~django.contrib.admin.display a úsáid -- bí ar an eolas go gcaithfear an fheidhm ```property () ``agus **not** an maisitheoir``` @property a úsáid:

  ```
  def my_property(self):
      return self.first_name + " " + self.last_name

  my_property.short_description = "Full name of the person"
  my_property.admin_order_field = "last_name"
  my_property.boolean = False

  full_name = property(my_property)
  ```
- \<field\_name\>\<th\>Beidh na hainmneacha réimse i list\_display\` le feiceáil mar ranganna CSS san aschur HTML, i bhfoirm ```column- ``ar gach eilimint``` . Is féidir é seo a úsáid chun leithead colún a shocrú i gcomhad CSS mar shampla.
- Déanfaidh Django iarracht gach eilimint de list\_display\` a léirmhíniú san ord seo:

  - Réimse den tsamhail nó ó réimse gaolmhar.
  - Is féidir glaoch.
  - Sreang a léiríonn tréith `ModelAdmin`.
  - Sreang a léiríonn tréith samhail.

  Mar shampla má tá `first_name` agat mar réimse samhail agus mar thréith `ModelAdmin`, úsáidfear an réimse samhail.

#### `ModelAdmin.list_display_links`

Úsáid `list_display_links` chun rialú a dhéanamh ar chóir agus cé na réimsí in:attr: list\_display a nascadh leis an leathanach “athraigh” le haghaidh réad.

De réir réamhshocraithe, nascfaidh an leathanach liosta athraithe an chéad cholún - an chéad réimse a shonraítear in `list_display` \- leis an leathanach athraithe do gach mír. Ach ligeann `list_display_links` duit é seo a athrú:

- Socraigh é go None chun aon naisc a fháil ar chor ar bith.
- Socraigh é go liosta nó tuipéar réimsí (san fhormáid chéanna le list\_display\`) ar mhaith leat a gcolúin a thiontú go naisc.

  Is féidir leat réimsí amháin nó go leor a shonrú. Chomh fada agus a bhíonn na réimsí le feiceáil in list\_display\`, ní cúram le Django cé mhéad (nó cé chomh beag) réimse atá nasctha. Is é an t-aon riachtanas ná más mian leat `list_display_links` a úsáid ar an mbealach seo, ní mór duit `list_display` a shainiú.

Sa sampla seo, beidh na réimsí `first_name` agus `last_name` nasctha ar an leathanach liosta athraithe:

```
class PersonAdmin(admin.ModelAdmin):
    list_display = ["first_name", "last_name", "birthday"]
    list_display_links = ["first_name", "last_name"]
```

Sa sampla seo, ní bheidh aon naisc ag an eangach leathanaigh liosta athraithe:

```
class AuditEntryAdmin(admin.ModelAdmin):
    list_display = ["timestamp", "message"]
    list_display_links = None
```

#### `ModelAdmin.list_editable`

Socraigh `list_editable` go liosta d'ainmneacha réimse ar an tsamhail a cheadóidh eagarthóireacht ar leathanach an liosta athraithe. Is é sin, taispeánfar réimsí atá liostaithe i list\_editable\` mar ghuirléidí foirme ar leathanach an liosta athraithe, rud a ligeann d'úsáideoirí sraitheanna iolracha a chur in eagar agus a shábháil ag an am céanna.

> **Note**
>
> Idirghníomhaíonn `list_editable` le cúpla rogha eile ar bhealaí ar leith; ba chóir duit na rialacha seo a leanas a thabhairt faoi deara:
>
> - Caithfidh aon réimse i list\_editable\` a bheith i list\_display\` freisin. Ní féidir leat réimse nach bhfuil ar taispeáint a chur in eagar!
> - Ní féidir an réimse céanna a liostú in `list_editable` agus `list_display_links` araon - ní féidir réimse a bheith ina fhoirm agus ina nasc araon.
>
> Gheobhaidh tú earráid bailíochtaithe má bhristear ceachtar de na rialacha seo.

#### `ModelAdmin.list_filter`

Socraigh `list_filter` chun scagairí a ghníomhachtú i mbarra taobh na láimhe deise ar leathanach liosta athraithe an riaracháin.

Ag an rud is simplí glacann `list_filter` liosta nó tuple d'ainmneacha réimse chun scagadh a ghníomhachtú, ach roinnt roghanna níos airde mar atá ar fáil. Féach: ref: modeladmin-list-filters le haghaidh na sonraí.

#### `ModelAdmin.list_max_show_all`

Socraigh `list_max_show_all` chun a rialú cé mhéad earra is féidir le feiceáil ar leathanach liosta athraithe riaracháin “Taispeáin go léir”. Taispeánfaidh an riarachán nasc “Taispeáin go léir” ar an liosta athraithe ach amháin má tá líon iomlán na dtorthaí níos lú ná nó cothrom leis an socrú seo. De réir réamhshocraithe, tá sé seo socraithe go `200`.

#### `ModelAdmin.list_per_page`

Socraigh `list_per_page` chun a rialú cé mhéad míreanna atá le feiceáil ar gach leathanach liosta athraithe riaracháin leathanaigh. De réir réamhshocraithe, tá sé seo socraithe go `100`.

#### `ModelAdmin.list_select_related`

Socraigh `list_select_related` chun a rá le Django go n-úsáid:meth: ~django.db.models.query.queryset.select\_related agus an liosta rudaí ar an leathanach liosta athraithe riaracháin a aisghabháil. Féadann sé seo dornán ceisteanna bunachar sonraí a shábháil duit.

Ba chóir go mbeadh an luach boolean, liosta nó tuple. Is é “False” réamhshocraithe.

Nuair a bhíonn luach `True`, glaofar ar ```select_related () ``i gcónaí. Nuair a shocraítear luach go `False```, féachfaidh Django ar list\_display\` agus glaoidh sé ar ```select_related () ``má tá aon ``ForeignKey``` i láthair.

Má theastaíonn níos mó rialú mionghráin uait, bain úsáid as tuple (nó liosta) mar luach do list\_select\_related. Cuirfidh tuple folamh cosc ar Django glaoch ar `select_related` ar chor ar bith. Cuirfear aon tuple eile ar aghaidh go díreach chuig `select_related` mar pharaiméadair. Mar shampla:

```
class ArticleAdmin(admin.ModelAdmin):
    list_select_related = ["author", "category"]
```

glaoifidh sé ar select\_related ('author', 'category') .

Más gá duit luach dinimiciúil a shonrú bunaithe ar an iarratas, is féidir leat modh a: meth: ~ModelAdmin.get\_List\_Select\_Related a chur i bhfeidhm.

> **Deprecated since Django 6.1**
>
> Deprecated since version 6.1: Using `True` for `list_select_related` is deprecated. Use a list or
> tuple of field names instead.

> **Note**
>
> Déanann `ModelAdmin` neamhaird ar an tréith seo nuair a rinneadh: meth: ~django.db.models.query.queryset.select\_related ar QuerySet\` an changelist cheana féin.

#### `ModelAdmin.ordering`

Socraigh ordú chun a shonrú conas ba chóir liostaí rudaí a ordú i dtuairimí riaracháin Django. Ba chóir go mbeadh sé seo ina liosta nó tuple san fhormáid chéanna le paraiméadar samhail's:attr: ~django.db.Models.Options.Ordering.

Mura gcuirtear é seo ar fáil, úsáidfidh riarachán Django ordú réamhshocraithe an tsamhail.

Más gá duit ordú dinimiciúil a shonrú (mar shampla ag brath ar úsáideoir nó ar theanga) is féidir leat modh a: meth: ~ModelAdmin.get\_Ordering a chur i bhfeidhm.

> **Creithnithe feidhmíochta maidir le hordú agus**
>
> Chun ordú cinntitheach torthaí a chinntiú, cuireann an liosta athraithe pk\` leis an ordú mura féidir leis sraith réimsí amháin nó uathúil a fháil le chéile a sholáthraíonn ordú iomlán.
>
> Mar shampla, má tá an t-ordú réamhshocraithe ag réimse ```ainm ``neamh-uathúil, ansin déantar an liosta athraithe a shórtáil de réir ``ainm``` agus pk\`. D'fhéadfadh sé seo feidhmiú go dona má tá go leor sraitheanna agat agus mura bhfuil innéacs agat ar ```ainm ``agus `pk```.

#### `ModelAdmin.paginator`

An rang paginator le húsáid le haghaidh leathanaigh. De réir réamhshocraithe, úsáidtear: class: django.core.paginator.paginator. Mura bhfuil an comhéadan tógála céanna ag an rang paginator saincheaptha las:class: django.core.paginator.paginator, beidh ort cur i bhfeidhm a sholáthar freis:meth: ModelAdmin.get\_Paginator.

#### `ModelAdmin.prepopulated_fields`

Socraigh `prepopulated_fields` chuig foclóir ainmneacha réimse a mhapáil chuig na réimsí ba chóir dó a réamhphoiliú ó:

```
class ArticleAdmin(admin.ModelAdmin):
    prepopulated_fields = {"slug": ["title"]}
```

Nuair a bheidh sé socraithe, úsáidfidh na réimsí ar leith beagán JavaScript chun líonadh ó na réimsí a shanntar. Is é an príomhúsáid don fheidhmiúlacht seo an luach do réimsí Slugfield\` a ghiniúint go huathoibríoch ó réimse amháin nó níos mó eile. Déantar an luach a ghintear a tháirgeadh trí luachanna na réimsí foinse a chomhcheangal, agus ansin tríd an toradh sin a athrú ina slug bailí (m.sh. sraitheanna a chur in ionad spásanna agus litreacha ASCII níos ísle).

Ní dhéanann JavaScript réamhphoilte a mhodhnú tar éis luach a shábháil. De ghnáth ní theastaíonn sé go n-athraíonn slóga (rud a d'fhágfadh go n-athródh URL réada má úsáidtear an slug ann).

Ní ghlacann `prepopulated_fields` le réimsí `DateTimeField`, ForeignKey\`, OneTooneField\`, agus `` `ManyTomanyField ``.

#### `ModelAdmin.preserve_filters`

De réir réamhshocraithe, caomhnaítear scagairí feidhme ar amharc an liosta tar éis réad a chruthú, a chur in eagar nó a scriosadh Is féidir leat scagairí a ghlanadh tríd an tréith seo a shocrú go `False`.

#### `ModelAdmin.show_facets`

Rialaíonn cibé an dtaispeántar comhaireamh gnéithe do scagairí sa liosta athraithe riaracháin. Réamhshocraithe chuig: attr: .showFacets.allow.

Nuair a thaispeántar, nuashonraíonn comhaireamh gnéithe i gcomhréir leis na scagairí

#### `class ShowFacets`

Enum na luachanna ceadaithe le haghaidh: attr: .modeladmin.show\_facets.

#### `ALWAYS`

Taispeáin líon gnéithe i gcónaí.

#### `ALLOW`

Taispeáin comhaireamh gnéithe nuair a chuirtear an paraiméadar teaghrán fiosrúcháin `_facets` ar fáil.

#### `NEVER`

Ná taispeáin comhaireamh gnéithe riamh.

Socraigh `show_facets` go dtí an luach inmhianaithe: class: .showFacets. Mar shampla, chun comhaireamh gnéithe a thaispeáint i gcónaí gan gá duit an paraiméadar ceisteanna a sholáthar:

```
from django.contrib import admin

class MyModelAdmin(admin.ModelAdmin):
    ...
    # Have facets always shown for this model admin.
    show_facets = admin.ShowFacets.ALWAYS
```

> **Creithnithe feidhmíochta le gnéithe**
>
> Méadóidh scagairí gnéithe a chumasú líon na gceisteanna ar leathanach an liosta athraithe riaracháin i gcomhréir le líon na scagairí. D'fhéadfadh fadhbanna feidhmíochta a bheith ina chúis leis na ceisteanna seo, go háirithe do Sna cásanna seo d'fhéadfadh sé a bheith oiriúnach `show_facets` a shocrú <go:attr>: .showFacets.Never chun aghaidh a dhíchumasú go hiomlán.

#### `ModelAdmin.radio_fields`

De réir réamhshocraithe, úsáideann riarachán Django comhéadan bosca roghnaithe (\<select\>) do réimsí atá `ForeignKey` nó a bhfuil ```roghanna ``socraithe acu. Má tá réimse i láthair in `radio_fields```, úsáidfidh Django comhéadan cnaipe raidió ina ionad. Ag glacadh leis gur `Grúpa` is `Eochair Foreign` ar an tsamhail `Duine`:

```
class PersonAdmin(admin.ModelAdmin):
    radio_fields = {"group": admin.VERTICAL}
```

Tá an rogha agat `HORIZONTAL` nó `VERTICAL` a úsáid ón modúl `django.contrib.admin`.

Ná cuir réimse san áireamh i radio\_fields\` mura bhfuil `ForeignKey` ann nó má tá tacar roghanna ann.

#### `ModelAdmin.autocomplete_fields`

Is é `autocomplete_fields` liosta de réimsí `ForeignKey` agus/nó `ManyTomanyField` ar mhaith leat a athrú go [Select2](#select2) ionchuir uathchomhlánaithe. \< <https://select2.org/>\>

De réir réamhshocraithe, úsáideann an riarachán comhéadan bosca roghnaithe (\<select\>\`\`\`) do na réimsí sin. Uaireanta níl tú ag iarraidh an lasbhreas a thabhairt faoi na cásanna gaolmhara go léir a roghnú le taispeáint sa anuas.

Breathnaíonn an t-ionchur Select2 cosúil leis an ionchur réamhshocraithe ach tagann sé le gné cuardaigh a luchtaíonn na roghanna go gascrónach. Tá sé seo níos tapúla agus níos éasca le húsáid má tá go leor cásanna ag an tsamhail ghaolmhar.

Ní mór duit: attr: ~ModelAdmin.search\_fields a shainiú ar ModelAdmin\` an réad gaolmhar toisc go n-úsáideann an cuardach uathchomhlánaithe é.

Chun nochtadh sonraí neamhúdaraithe a sheachaint, caithfidh an cead `amharc` nó `athraithe` a bheith ag úsáideoirí don réad gaolmhar chun uathchomhlánú a úsáid.

Rialaítear ordú agus leathanaigh na dtorthaí ag na modhanna gaolmhara `ModelAdmin`: Meth: ~ModelAdmin.get\_Ordering agus:meth: ~ModelAdmin.get\_Paginator.

Sa sampla seo a leanas, tá réimse uathchomhlánaithe ag `ChoiceAdmin` don ForeignKey\` chuig an Cheiste\`. Déantar na torthaí a scagadh ag an réimse `question_text` agus ordaítear leis an réimse `date_created`:

```
class QuestionAdmin(admin.ModelAdmin):
    ordering = ["date_created"]
    search_fields = ["question_text"]

class ChoiceAdmin(admin.ModelAdmin):
    autocomplete_fields = ["question"]
```

> **Breithnithe feidhmíochta do thacair mhóra**
>
> D'fhéadfadh fadhbanna feidhmíochta a bheith ina chúis le hordú ag baint úsáide as: attr: ModelAdmin.Ordering toisc go mbeidh sórtáil ar thacar cheisteanna mór mall.
>
> Chomh maith leis sin, má chuimsíonn do réimsí cuardaigh réimsí nach bhfuil innéacsaithe ag an mbunachar sonraí, d'fhéadfá droch-fheidhmíocht ar tháblaí an-mhóra.
>
> Maidir leis na cásanna sin, is smaoineamh maith é do chur i bhfeidhm féin: func: ModelAdmin.get\_search\_results a scríobh ag baint úsáide as cuardach innéacsaithe lántéacs.
>
> B'fhéidir gur mhaith leat an `Paginator` a athrú ar tháblaí an-mhóra mar go ndéanann an paginator réamhshocraithe fiosrúchán ```count () ``i gcónaí. Mar shampla, d'fhéadfá cur i bhfeidhm réamhshocraithe na maoine ``Paginator.count``` a shárú.

#### `ModelAdmin.raw_id_fields`

De réir réamhshocraithe, úsáideann riarachán Django comhéadan bosca roghnaithe (\<select\>) do réimsí atá ForeignKey\`. Uaireanta níl tú ag iarraidh an lasbhreas a thabhairt faoi na cásanna gaolmhara go léir a roghnú le taispeáint sa anuas anuas.

Is liosta réimsí é `raw_id_fields` ar mhaith leat a athrú go giuirléid `Input` le haghaidh ForeignKey\` nó `ManyTomanyField`:

```
class ArticleAdmin(admin.ModelAdmin):
    raw_id_fields = ["newspaper"]
```

The `raw_id_fields` `Input` widget should contain a primary key if the
field is a `ForeignKey` or a comma separated list of values if the field
is a `ManyToManyField`. The `raw_id_fields` widget shows a magnifying
glass button next to the field which allows users to search for and select
a value:

![](ref/contrib/admin/_images/raw_id_fields.png)

#### `ModelAdmin.readonly_fields`

De réir réamhshocraithe taispeánann an riarachán gach réimse mar ineagarthóir. Taispeánfaidh aon réimsí sa rogha seo (ar chóir a bheith ina `liost` nó `tuple`) a chuid sonraí mar atá agus neamh-eagarthaithe; tá siad eisiata freisin ó:class: ~django.forms.ModelForm a úsáidtear chun cruthú agus eagarthóireacht. Tabhair faoi deara go gcaithfidh na réimsí léite amháin a bheith i láthair nuair a shonraítear: attr: ModelAdmin.Fields nó: attr: ModelAdmin.FieldSets ní mór na réimsí léite amháin a bheith i láthair le taispeáint (déantar neamhaird orthu ar shlí eile).

Má úsáidtear `readonly_fields` gan ordú follasach a shainiú trí:attr: ModelAdmin.fields nó: attr: ModelAdmin.FieldSets cuirfear iad go deireanach tar éis gach réimse ineagarthóireachta.

Ní amháin gur féidir le réimse léite amháin sonraí ó réimse samhail a thaispeáint, féadann sé aschur modh samhail nó modh den rang ModelAdmin\` féin a thaispeáint freisin. Tá sé seo an-chosúil leis an mbealach: attr: ModelAdmin.list\_display iompraíonn. Soláthraíonn sé seo bealach chun an comhéadan riaracháin a úsáid chun aiseolas a sholáthar ar stádas na rudaí atá á chur in eagar, mar shampla:

```
from django.contrib import admin
from django.utils.html import format_html_join
from django.utils.safestring import mark_safe

class PersonAdmin(admin.ModelAdmin):
    readonly_fields = ["address_report"]

    # description functions like a model field's verbose_name
    @admin.display(description="Address")
    def address_report(self, instance):
        # assuming get_full_address() returns a list of strings
        # for each line of the address and you want to separate each
        # line by a linebreak
        return format_html_join(
            mark_safe("<br>"),
            "{}",
            ((line,) for line in instance.get_full_address()),
        ) or mark_safe("<span class='errors'>I can't determine this address.</span>")
```

#### `ModelAdmin.save_as`

Socraigh save\_as chun gné “sábháil mar nua” a chumasú ar fhoirmeacha athraithe riaracháin.

De ghnáth, bíonn trí rogha sábhála ag rudaí: “Sábháil”, “Sábháil agus lean ar aghaidh ag eagarthóireacht”, agus “Sábháil agus cuir eile leis”. Más é `save_as` True\`, cuirfear cnaipe “Sábháil mar nua” in ionad “Sábháil agus cuir eile leis” a chruthaíonn réad nua (le ID nua) seachas an réad atá ann cheana a nuashonrú.

De réir réamhshocraithe, socraítear `save_as` go `False`.

#### `ModelAdmin.save_as_continue`

When: attr: save\_as = True \<save\_as\>, is é an t-atreorú réamhshocraithe tar éis an réad nua a shábháil chuig an radharc athraithe don réad sin. Má shocraíonn tú `save_as_continue=False`, beidh an t-atreorú chuig an radharc liosta athraithe.

De réir réamhshocraithe, socraítear `save_as_continue` go `True`.

#### `ModelAdmin.save_on_top`

Socraigh `save_on_top` chun cnaipí sábhála a chur ar fud barr d'fhoirmeacha athraithe riaracháin.

De ghnáth, ní bhíonn na cnaipí sábhála le feiceáil ach ag bun na bhfoirmeacha. Má shocraíonn tú `save_on_top`, beidh na cnaipí le feiceáil ar an mbarr agus ar an mbun araon.

De réir réamhshocraithe, socraítear `save_on_top` go `False`.

#### `ModelAdmin.search_fields`

Socraigh `search_fields` chun bosca cuardaigh a chumasú ar an leathanach liosta athraithe riaracháin. Ba chóir é seo a shocrú ar liosta d'ainmneacha réimse a chuardófar aon uair a chuireann duine fiosrúchán cuardaigh isteach sa bhosca téacs sin.

These fields are typically text fields such as `CharField` or
`TextField`, but non-text fields like `IntegerField` can also be
searched. Adding an explicit lookup, such as `age__exact`, lets the
search use that lookup directly instead of casting the value to text. You
can also perform a related lookup on a `ForeignKey` or
`ManyToManyField` with the lookup API "follow" notation:

```
search_fields = ["foreign_key__related_fieldname"]
```

Mar shampla, má tá iontráil blag agat le húdar, chuirfeadh an sainmhíniú seo a leanas ar chumas iontrálacha blag a chuardach de réir seoladh ríomhphoist an údair:

```
search_fields = ["user__email"]
```

When somebody does a search in the admin search box, Django splits the
search query into search terms and returns all objects that contain each
of them in at least one of `search_fields`. By default, the
[`icontains`](/ga/6.1/ref/models/querysets/#std-fieldlookup-icontains) lookup is used for text fields. For non-text fields
with an explicit lookup (e.g., `age__exact`), the specified lookup is
used, and search terms that are invalid for that field type are skipped.

For example, if `search_fields` is set to
`['first_name', 'last_name', 'age__exact']` and a user searches for
`john 25`, Django will do the equivalent of this SQL `WHERE` clause:

```sql
WHERE (first_name ILIKE '%john%' OR last_name ILIKE '%john%')
AND (first_name ILIKE '%25%' OR last_name ILIKE '%25%' OR age = 25)
```

Note that `john` is not searched on `age` because it's not a valid
integer, while `25` is searched on all three fields.

Is féidir frásaí luaite le spásanna a bheith san fhiosrúchán cuardaigh. Mar shampla, má dhéanann úsáideoir cuardach ar `"john winston"` nó `` `john winston' ``, déanfaidh Django an coibhéis leis an gclásal `WHERE` SQL seo:

```sql
WHERE (first_name ILIKE '%john winston%' OR last_name ILIKE '%john winston%')
```

Mura dteastaíonn uait `icontains` a úsáid mar an cuardach, is féidir leat aon chuardach a úsáid tríd an réimse a chur leis. Mar shampla, d'fhéadfá: lookup: exact a úsáid trí search\_fields\` a shocrú go `['first_name__correct']`.

Tá roinnt aicearraí (níos sine) chun cuardach réimse a shonrú ar fáil freisin. \<lookup\>Is féidir leat réimse réimse a réamhrú in search\_fields\` leis na carachtair seo a leanas agus tá sé coibhéiseach le \_\_ a chur leis an réimse:

| Réimír | Cuardaigh |
| --- | --- |
| ^ | [`istartswith`](/ga/6.1/ref/models/querysets/#std-fieldlookup-istartswith) |
| = | [`iexact`](/ga/6.1/ref/models/querysets/#std-fieldlookup-iexact) |
| @ | [`search`](/ga/6.1/ref/contrib/postgres/search/#std-fieldlookup-search) |
| Dada | [`icontains`](/ga/6.1/ref/models/querysets/#std-fieldlookup-icontains) |

Más gá duit cuardach a shaincheapadh is féidir leat: meth: ModelAdmin.get\_search\_results a úsáid chun iompar cuardaigh breise nó malartach a sholáthar.

> **Changed in Django 6.1**
>
> On earlier versions, search terms invalid for a given field type were
> not skipped.

#### `ModelAdmin.search_help_text`

Socraigh `search_help_text` chun téacs tuairisciúil a shonrú don bhosca cuardaigh a thaispeánfar faoin mbosca cuardaigh.

#### `ModelAdmin.show_full_result_count`

Socraigh `show_full_result_count` chun rialú a dhéanamh ar chóir líon iomlán na rudaí a thaispeáint ar leathanach riaracháin scagtha (m.sh. ```99 torthaí (103 iomlán) ``). Má tá an rogha seo socraithe go ``False```, taispeántar téacs mar 99 thorthaí (Taispeáin go léir) ina ionad.

Gineann réamhshocrú `show_full_result_count=True` ceist chun comhaireamh iomlán a dhéanamh ar an tábla a d'fhéadfadh a bheith daor má tá líon mór sraitheanna sa tábla.

#### `ModelAdmin.sortable_by`

De réir réamhshocraithe, ceadaíonn an leathanach liosta athraithe a shórtáil de réir gach réimse samhail (agus glaonna a úsáideann an argóint `ording` leis an maisitheoir: func: ~django.contrib.admin.display nó a bhfuil an tréith admin\_order\_field\` acu) sonraithe in:attr: list\_display.

Más mian leat sórtáil a dhíchumasú do roinnt colúin, socraigh `sortable_by` chuig bailiúchán (m.sh. list\`, tuple\`, nó `set`) den fho-thacar de:attr: list\_display a theastaíonn uait a shórtáil. Díchumasaíonn bailiúchán folamh sórtáil do gach colún.

Más gá duit an liosta seo a shonrú go dinimiciúil, cuir modh a:meth: ~ModelAdmin.get\_sortable\_by i bhfeidhm ina ionad.

#### `ModelAdmin.view_on_site`

Socraigh `view_on_site` chun rialú a dhéanamh an bhfuil an nasc “Amharc ar an láithreán” a thaispeáint nó nach bhfuil. Ba chóir go dtabharfadh an nasc seo tú chuig URL áit ar féidir leat an réad sábháltha a thaispeáint.

Is féidir leis an luach seo a bheith ina bhratach boolean nó inghlaonta. Má tá `True` (an réamhshocraithe), úsáidfear an modh object's:meth: ~django.db.models.model.get\_absolute\_url chun an url a ghiniúint.

Má tá modh a:meth: ~django.db.models.model.get\_absolute\_url ag do mhúnla ach nach dteastaíonn uait go mbeadh an cnaipe “Amharc ar an láithreán” le feiceáil, ní gá duit ach view\_on\_site\` a shocrú go `False`:

```
from django.contrib import admin

class PersonAdmin(admin.ModelAdmin):
    view_on_site = False
```

Sa chás go bhfuil sé inghlaonta, glacann sé leis an gcás samhail mar pharaiméadar. Mar shampla:

```
from django.contrib import admin
from django.urls import reverse

class PersonAdmin(admin.ModelAdmin):
    def view_on_site(self, obj):
        url = reverse("person-detail", kwargs={"slug": obj.slug})
        return "https://example.com" + url
```

#### Roghanna teimpléad saincheap

The [Teimpléid riaracháin forchoitianta](#admin-overriding-templates) section describes how to override or
extend the default admin templates. Use the following options to override the
default templates used by the [`ModelAdmin`](#django.contrib.admin.ModelAdmin) views:

#### `ModelAdmin.add_form_template`

Conair chuig teimpléad saincheaptha, a úsáideann: meth: add\_view.

#### `ModelAdmin.change_form_template`

Conair chuig teimpléad saincheaptha, a úsáideann: meth: change\_view.

#### `ModelAdmin.change_list_template`

Conair chuig teimpléad saincheaptha, a úsáideann: meth: changelist\_view.

#### `ModelAdmin.delete_confirmation_template`

Conair chuig teimpléad saincheaptha, a úsáideann: meth: delete\_view chun leathanach dearbhaithe a thaispeáint agus réad amháin nó níos mó á scriosadh.

#### `ModelAdmin.delete_selected_confirmation_template`

Conair chuig teimpléad saincheaptha, a úsáidtear ag an modh gníomhaíochta delete\_selected chun leathanach dearbhaithe a thaispeáint agus réad amháin nó níos mó á scriosadh. Féach na:doc: @@\</ref/contrib/admin/actions\> doiciméadú gníomhaíochtaí '.

#### `ModelAdmin.delete_confirmation_max_display`

> **New in Django 6.1**

Set `delete_confirmation_max_display` to control how many objects are
displayed on the delete confirmation pages before truncating the remainder
with an ellipsis.

The limit applies to the total number of displayed objects across the
relationship hierarchy. This is purely a display setting and does not
affect the total number of objects retrieved from the database.

This applies to [`delete_view()`](#django.contrib.admin.ModelAdmin.delete_view) and the `delete_selected`
action if specified for `ModelAdmin`, and to protected deletion
validation messages if specified for `InlineModelAdmin`. By default,
this is `None` (no truncation).

#### `ModelAdmin.object_history_template`

Conair chuig teimpléad saincheaptha, a úsáideann: meth: history\_view.

#### `ModelAdmin.popup_response_template`

Conair chuig teimpléad saincheaptha, a úsáideann:: meth: response\_add, :meth: response\_change, agus:meth: response\_delete.

### Modhanna `ModelAdmin`

> **Warning**
>
> Agus tú ag ró-ríomh: meth: ModelAdmin.save\_model agus:meth: ModelAdmin.delete\_model, ní mór do chód an réad a shábháilt/scriosadh. Níl siad i gceist chun críocha veto, ach ceadaíonn siad duit oibríochtaí breise a dhéanamh.

#### `ModelAdmin.save_model(request, obj, form, change)`

Tugtar an HttpRequest\` don modh save\_model\`, sampla samhail, sampla `ModelForm`, agus luach boolean bunaithe ar an bhfuil an réad á chur leis nó ag athrú. Ligeann an modh seo a shárú oibríochtaí réamhshábhála nó iar-shábháil a dhéanamh. Glaoigh ar super () .save\_model () chun an réad a shábháil ag baint úsáid:meth: .model.save.

Mar shampla chun `request.user` a cheangal leis an réad sula ndéantar é a shábháil:

```
from django.contrib import admin

class ArticleAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.user = request.user
        super().save_model(request, obj, form, change)
```

#### `ModelAdmin.delete_model(request, obj)`

Tugtar an HttpRequest\` agus sampla samhail don modh delete\_model\`. Ligeann an modh seo a shárú oibríochtaí réamh-scriosta nó iar-scriosta a dhéanamh. Glaoigh ar super () .delete\_model () chun an réad a scriosadh ag baint úsáid:meth: .model.delete.

#### `ModelAdmin.delete_queryset(request, queryset)`

The `delete_queryset()` method is given the `HttpRequest` and a
`QuerySet` of objects to be deleted. Override this method to customize
the deletion process for the "delete selected objects" [action](/ga/6.1/ref/contrib/admin/actions/).

#### `ModelAdmin.save_formset(request, form, formset, change)`

Tugtar an modh `save_formset` an HttpRequest\`, sampla an tuismitheora `ModelForm` agus luach boolean bunaithe ar cibé an bhfuil sé ag cur nó ag athrú an tuismitheora réad.

Mar shampla, chun request.user\` a cheangal le gach samhail foirmset athraithe:

```
class ArticleAdmin(admin.ModelAdmin):
    def save_formset(self, request, form, formset, change):
        instances = formset.save(commit=False)
        for obj in formset.deleted_objects:
            obj.delete()
        for instance in instances:
            instance.user = request.user
            instance.save()
        formset.save_m2m()
```

Féach freis:ref: saving-objects-in-the-formset.

> **Warning**
>
> Tugann gach crúca a thugann maoin ModelAdmin\` ar ais an maoin féin ar ais seachas cóip dá luach. D'fhéadfadh torthaí iontais a bheith mar thoradh ar an luach a mhodhnú go
>
> Glacaimis:meth: ModelAdmin.get\_ReadOnly\_Fields mar shampla:
>
> ```
> class PersonAdmin(admin.ModelAdmin):
>     readonly_fields = ["name"]
>
>     def get_readonly_fields(self, request, obj=None):
>         readonly = super().get_readonly_fields(request, obj)
>         if not request.user.is_superuser:
>             readonly.append("age")  # Edits the class attribute.
>         return readonly
> ```
>
> Mar thoradh air seo bíonn `readonly_fields` `["ainm”, “aois”, “aois”,...]`, fiú do sárúsáideoir, mar a chuirtear "aois” leis gach uair a thugann neamh-sárúsáideoir cuairt ar an leathanach.

#### `ModelAdmin.get_ordering(request)`

Glacann an modh `get_ordering` `iarraidh` mar pharaiméadar agus táthar ag súil go gcuirfidh sé liost\` nó tuple\` ar ais chun ordú cosúil leis an tréith: attr: ordúna. Mar shampla:

```
class PersonAdmin(admin.ModelAdmin):
    def get_ordering(self, request):
        if request.user.is_superuser:
            return ["name", "rank"]
        else:
            return ["name"]
```

#### `ModelAdmin.get_search_results(request, queryset, search_term)`

Athraíonn an modh `get_search_results` liosta na rudaí a thaispeántar isteach iad siúd a mheaitseálann an téarma cuardaigh a chuirtear ar fáil. Glacann sé leis an iarratas, tacar cheisteanna a chuireann na scagairí reatha i bhfeidhm, agus an téarma cuardaigh a sholáthraíonn an úsáideoir. Filleann sé tuple ina bhfuil tacar fiosrúcháin arna modhnú chun an cuardach a chur i bhfeidhm, agus boolean a thugann le fios an bhféadfadh dúbailtí a bheith sna torthaí.

Déanann an cur i bhfeidhm réamhshocraithe cuardach ar na réimsí a ainmnítear in:attr: ModelAdmin.search\_fields.

Féadfar an modh seo a shárú le do mhodh cuardaigh saincheaptha féin. Mar shampla, b'fhéidir gur mhaith leat cuardach a dhéanamh de réir réimse sláimhir, nó uirlis sheachtrach mar [Solr](https://solr.apache.org) nó [Haystack](https://haystacksearch.org) a úsáid. Ní mór duit a fháil amach an bhféadfadh na hathruithe tacar fiosrúcháin a chuirtear i bhfeidhm ag do mhodh cuardaigh dúbailtí a thabhairt isteach sna torthaí, agus `True` a thabhairt ar ais sa dara gné den luach tuairisceáin.

Mar shampla, chun cuardach a dhéanamh de réir ainm \`\`agus \`\`aois\`, d'fhéadfá úsáid a bhaint as:

```
class PersonAdmin(admin.ModelAdmin):
    list_display = ["name", "age"]
    search_fields = ["name"]

    def get_search_results(self, request, queryset, search_term):
        queryset, may_have_duplicates = super().get_search_results(
            request,
            queryset,
            search_term,
        )
        try:
            search_term_as_int = int(search_term)
        except ValueError:
            pass
        else:
            queryset |= self.model.objects.filter(age=search_term_as_int)
        return queryset, may_have_duplicates
```

Tá an cur i bhfeidhm seo níos éifeachtaí ná ```search_fields = ('name', '=age') ``a dtagann comparáid teaghráin don réimse uimhriúil mar thoradh air, mar shampla```... NÓ UACHTARACH (“polls\_choice”. vótaí” ::text) = UPPER ('4') ar PostgreSQL.

#### `ModelAdmin.save_related(request, form, formsets, change)`

Tugtar an modh `save_related` an HttpRequest\`, an tuismitheoir ModelForm , an liosta foirmeacha inlíne agus luach boolean bunaithe ar an bhfuil an tuismitheoir á chur leis nó á athrú. Anseo is féidir leat aon oibríochtaí réamhshábhála nó iar-shábháil a dhéanamh le haghaidh rudaí a bhaineann leis an tuismitheoir. Tabhair faoi deara go bhfuil an tuismitheoir réad agus a fhoirm sábháilte cheana féin ag an bpointe seo.

#### `ModelAdmin.get_autocomplete_fields(request)`

Tugtar an HttpRequest\` don modh ```get_autocomplete_fields () ``agus táthar ag súil go bhfaighidh sé ``list``` nó `tuple` d'ainmneacha réimse a thaispeánfar le giuirléid uathchomhlánaithe mar a thuairiscítear thuas sa ranna:attr: ModelAdmin.autocomplete\_fields.

#### `ModelAdmin.get_readonly_fields(request, obj=None)`

Tugtar an modh `get_readonly_fields` an HttpRequest\` agus an obj\` atá á chur in eagar (nó `None` ar fhoirm breise) agus táthar ag súil go bhfaighidh liost\` nó tuple\` d'ainmneacha réimse a thaispeánfar mar léamh amháin, mar a thuairiscítear thuas san: Read.Model.rannán ly\_fields'.

#### `ModelAdmin.get_prepopulated_fields(request, obj=None)`

Tugtar an modh `get_prepopulated_fields` an HttpRequest\` agus an obj\` atá á chur in eagar (nó `None` ar fhoirm breise) agus táthar ag súil go bhfaighidh sé foclóir\` ar ais, mar a thuairiscítear thuas sa ranna:attr: ModelAdmin.prePopulated\_Fields.

#### `ModelAdmin.get_list_display(request)`

Tugtar an HttpRequest\` don modh `get_list_display` agus táthar ag súil go bhfaighidh sé `list` nó tuple\` d'ainmneacha réimse a thaispeánfar ar an radharc an liosta athraithe mar a thuairiscítear thuas sa ranna:attr: ModelAdmin.list\_display.

#### `ModelAdmin.get_list_display_links(request, list_display)`

Tugtar an `HttpRequest` don modh `get_list_display_links` agus an list\` nó `tuple` ar ais ar:meth: ModelAdmin.get\_list\_display. Táthar ag súil go bhfillfidh sé `None` nó `liost` nó `tuple` d'ainmneacha réimse ar an liosta athraithe a bheidh nasctha leis an radharc athraithe, mar a thuairiscítear sa ranna:attr: ModelAdmin.list\_display\_links.

#### `ModelAdmin.get_exclude(request, obj=None)`

Tugtar an modh `get_exclude` an HttpRequest\` agus an obj\` atá á chur in eagar (nó `None` ar fhoirm breise) agus táthar ag súil go gcuirfidh sé liosta réimsí ar ais, mar a thuairiscítear in:attr: ModelAdmin.exclude.

#### `ModelAdmin.get_fields(request, obj=None)`

Tugtar an modh `get_fields` an HttpRequest\` agus an obj\` atá á chur in eagar (nó `None` ar fhoirm bhreise) agus táthar ag súil go gcuirfidh sé liosta réimsí ar ais, mar a thuairiscítear thuas sa roinn:attr: ModelAdmin.fields.

#### `ModelAdmin.get_fieldsets(request, obj=None)`

\<fieldset\>Tugtar an modh `get_fieldsets` an HttpRequest\` agus an obj\` atá á chur in eagar (nó `None` ar fhoirm bhreise) agus táthar ag súil go bhfaighidh sé liosta 2-tuples ar ais, ina léiríonn gach 2-tuple ar leathanach na foirme riaracháin, mar a thuairiscítear thuas in:attr: Adminmodel.fieldsets rannán.

#### `ModelAdmin.get_list_filter(request)`

Tugtar an HttpRequest\` don modh `get_list_filter` agus táthar ag súil go bhfaighidh sé an cineál céanna seicheamh ar ais leis an tréith: attr: ~ModelAdmin.list\_filter.

#### `ModelAdmin.get_list_select_related(request)`

Tugtar an HttpRequest\` don modh `get_list_select_related` agus ba cheart boolean nó liosta a thabhairt ar ais mar: attr: ModelAdmin.list\_Select\_Related a dhéanann.

> **Deprecated since Django 6.1**
>
> Deprecated since version 6.1: Returning `True` is deprecated. Return a list or tuple of field names
> instead.

#### `ModelAdmin.get_search_fields(request)`

Tugtar an HttpRequest\` don modh `get_search_fields` agus táthar ag súil go bhfaighidh sé an cineál céanna seicheamh ar ais mar thréith: attr: ~ModelAdmin.search\_fields.

#### `ModelAdmin.get_sortable_by(request)`

Tá an modh ```get_sortable_by () ``rith an `HttpRequest``` agus táthar ag súil go bhfaighidh sé bailiúchán (m.sh. list\`, tuple\`, nó `set`) d'ainmneacha réimse a shórtálfar ar an leathanach liosta athraithe.

Filleann a chur i bhfeidhm réamhshocraithe:attr: sortable\_by má tá sé socraithe, ar shlí eile cuirtear iarchur chuig: meth: get\_list\_display.

Mar shampla, chun colún amháin nó níos mó a chosc ó bheith inscartha:

```
class PersonAdmin(admin.ModelAdmin):
    def get_sortable_by(self, request):
        return {*self.get_list_display(request)} - {"rank"}
```

#### `ModelAdmin.get_inline_instances(request, obj=None)`

Tugtar an modh `get_inline_instances` an HttpRequest\` agus an obj\` atá á chur in eagar (nó `None` ar fhoirm breise) agus táthar ag súil go bhfaighidh sé rudaí `list` nó tuple\` o:class: ~django.contrib.admin.inlineModelAdmin, mar a thuairiscítear thíos :class: ~django.contrib.admin.inlineModelAdmin rannán. Mar shampla, chuirfeadh an méid seo a leanas ar ais inlíne gan an scagadh réamhshocraithe bunaithe ar cheadanna a chur leis, a athrú, a scriosadh agus féachaint:

```
class MyModelAdmin(admin.ModelAdmin):
    inlines = [MyInline]

    def get_inline_instances(self, request, obj=None):
        return [inline(self.model, self.admin_site) for inline in self.inlines]
```

Má sháraíonn tú an modh seo, déan cinnte gur cásanna iad na línte a thugtar ar ais de na ranganna atá sainmhínithe in:attr: inlines nó d'fhéadfadh go mbeadh earráid “Droch-iarratas” ort agus rudaí gaolmhara á chur leis.

#### `ModelAdmin.get_inlines(request, obj)`

Tugtar an modh `get_inlines` an HttpRequest\` agus an `obj` atá á chur in eagar (nó `None` ar fhoirm bhreise) agus táthar ag súil go bhfaighidh sé athrá inlíne ar ais. Is féidir leat an modh seo a shárú chun inlínte a chur go dinimiciúil bunaithe ar an iarratas nó an samhail samhail in ionad iad a shonrú in:attr: ModelAdmin.inlines.

#### `ModelAdmin.get_urls()`

The `get_urls` method on a `ModelAdmin` returns the URLs to be used for
that ModelAdmin in the same way as a URLconf. Therefore you can extend
them as documented in [URL dispatcher](/ga/6.1/topics/http/urls/), using the
`AdminSite.admin_view()` wrapper on your views:

```
from django.contrib import admin
from django.template.response import TemplateResponse
from django.urls import path

class MyModelAdmin(admin.ModelAdmin):
    def get_urls(self):
        urls = super().get_urls()
        my_urls = [path("my_view/", self.admin_site.admin_view(self.my_view))]
        return my_urls + urls

    def my_view(self, request):
        # ...
        context = dict(
            # Include common variables for rendering the admin template.
            self.admin_site.each_context(request),
            # Anything else you want in the context...
            key=value,
        )
        return TemplateResponse(request, "sometemplate.html", context)
```

Más mian leat an leagan amach riaracháin a úsáid, síneadh ó `admin/base_site.html`:

```html+django
{% extends "admin/base_site.html" %}
{% block content %}
...
{% endblock %}
```

> **Note**
>
> Tabhair faoi deara conas a bhfuil an fheidhm `self.my_view` fillte i `self.admin_site.admin_view`. Tá sé seo tábhachtach, ós rud é go gcinntíonn sé dhá rud:
>
> 1. Déantar seiceálacha ceada á reáchtáil, ag cinntiú nach féidir ach úsáideoirí foirne gníomhacha
> 2. Cuirtear an maisitheoir: Func: django.views.decorators.cache.never\_cache i bhfeidhm chun cúisceáil a chosc, ag cinntiú go bhfuil an fhaisnéis ar ais cothrom le dáta.

> **Note**
>
> Tabhair faoi deara go bhfuil na patrúin saincheaptha san áireamh roim\* na URLanna riaracháin rialta: tá na patrúin URL riaracháin an-cheadaithe agus meaitseálfaidh siad beagnach aon rud, mar sin de ghnáth beidh tú ag iarraidh do URLanna saincheaptha a phleanáil leis na cinn ionsuite.
>
> Sa sampla seo, beidh rochtain ar `my_view` ag `/admin/myapp/mymodel/my_view/` (ag glacadh leis go bhfuil na URLanna riaracháin san áireamh ag `/admin/`.)

Má tá an leathanach incháilithe, ach má theastaíonn uait fós go ndéanfaí an seiceáil ceada, is féidir leat argóint `cacheable=True` a chur ar aghaidh chuig adminsite.admin\_view () \`:

```
path("my_view/", self.admin_site.admin_view(self.my_view, cacheable=True))
```

Tá tréithe ```model_admin ``ag tuairimí ``ModelAdmin```. Tá tréithe `admin_site` ag tuairimí adminSite\` eile.

#### `ModelAdmin.get_form(request, obj=None, **kwargs)`

Tuairisceáin a:class: ~django.forms.ModelForm rang le húsáid sa riarachán tuairimí cuir agus athraigh, féach:meth: add\_view agus:meth: change\_view.

Úsáideann an cur i bhfeidhm bonn:func: ~django.forms.models.modelform\_factory go fo-aicme: attr: ~form, modhnaithe ag tréithe mar: attr: ~fields agus:attr: ~fields agus:attr: ~ eisiúint . Mar sin, mar shampla, dá dteastaíonn uait réimsí breise a thairiscint do sárúsáideoirí, d'fhéadfá malartú i bhfoirm bhonn difriúil mar sin:

```
class MyModelAdmin(admin.ModelAdmin):
    def get_form(self, request, obj=None, **kwargs):
        if request.user.is_superuser:
            kwargs["form"] = MySuperuserForm
        return super().get_form(request, obj, **kwargs)
```

Féadfaidh tú rang saincheap:class: ~django.forms.ModelForm a thabhairt ar ais go díreach freisin.

#### `ModelAdmin.get_formsets_with_inlines(request, obj=None)`

Péirí torthaí (`FormSet`, :class: InlineModelAdmin) le húsáid i riarachán tuairimí a chur leis agus a athrú.

Mar shampla más mian leat inlíne áirithe a thaispeáint sa radharc athraithe amháin, d'fhéadfá `get_formsets_with_inlines` a shárú mar seo a leanas:

```
class MyModelAdmin(admin.ModelAdmin):
    inlines = [MyInline, SomeOtherInline]

    def get_formsets_with_inlines(self, request, obj=None):
        for inline in self.get_inline_instances(request, obj):
            # hide MyInline in the add view
            if not isinstance(inline, MyInline) or obj is not None:
                yield inline.get_formset(request, obj), inline
```

#### `ModelAdmin.formfield_for_foreignkey(db_field, request, **kwargs)`

Ligeann an modh `formfield_for_foreignkey` ar ModelAdmin\` duit an réimse foirme réamhshocraithe do réimse eochracha eachtracha eachtracha a shárú. Mar shampla, chun fo-thacar rudaí a thabhairt ar ais don phríomhréimse eachtrach seo bunaithe ar an úsáideoir:

```
class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "car":
            kwargs["queryset"] = Car.objects.filter(owner=request.user)
        return super().formfield_for_foreignkey(db_field, request, **kwargs)
```

Úsáideann sé seo an tsampla HttpRequest\` chun an réimse eochair eachtrach `Car` a scagadh chun na gluaisteáin atá faoi úinéireacht an Úsáideora a thaispeáint ach amháin.

Le haghaidh scagairí níos casta, is féidir leat ```ModelForm a úsáid. Modh __init__ () ``chun scagadh bunaithe ar `instance``` de do mhúnla (féach:ref: fields-what-handle-reachships). Mar shampla:

```
class CountryAdminForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields["capital"].queryset = self.instance.cities.all()

class CountryAdmin(admin.ModelAdmin):
    form = CountryAdminForm
```

#### `ModelAdmin.formfield_for_manytomany(db_field, request, **kwargs)`

Cosúil leis an modh `formfield_for_foreignkey`, is féidir an modh `formfield_for_manytomany` a athrú chun an réimse foirme réamhshocraithe do réimse go leor réimse a athrú. Mar shampla, más féidir le húinéir ilghluaisteáin a bheith ag úinéir agus is féidir gluaisteáin a bheith bainteach le go leor úinéirí -- d'fhéadfá an réimse eochair eachtrach Carr\` a scagadh chun na gluaisteáin atá faoi úinéireacht an Úsáideora a thaispeáint amháin:

```
class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_manytomany(self, db_field, request, **kwargs):
        if db_field.name == "cars":
            kwargs["queryset"] = Car.objects.filter(owner=request.user)
        return super().formfield_for_manytomany(db_field, request, **kwargs)
```

#### `ModelAdmin.formfield_for_choice_field(db_field, request, **kwargs)`

Cosúil leis na modhanna `formfield_for_foreignkey` agus `formfield_for_manytomany`, is féidir an modh `formfield_for_choice_field` a athrú chun an réimse foirme réamhshocraithe a athrú do réimse a bhfuil roghanna dearbhaithe aige. Mar shampla, más chóir go mbeadh na roghanna atá ar fáil do sárúsáideoir difriúil ná na roghanna atá ar fáil d'fhoireann rialta, d'fhéadfá dul ar aghaidh mar seo a leanas:

```
class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_choice_field(self, db_field, request, **kwargs):
        if db_field.name == "status":
            kwargs["choices"] = [
                ("accepted", "Accepted"),
                ("denied", "Denied"),
            ]
            if request.user.is_superuser:
                kwargs["choices"].append(("ready", "Ready for deployment"))
        return super().formfield_for_choice_field(db_field, request, **kwargs)
```

> **Teorainneacha roghna**
>
> Beidh aon tréith `roghna` atá leagtha amach ar an réimse foirme teoranta don réimse foirme amháin. Má tá roghanna socraithe sa réimse comhfhreagrach ar an tsamhail, caithfidh na roghanna a chuirtear ar fáil don fhoirm a bheith ina fho-thacar bailí de na roghanna sin, ar shlí eile teipeann ar an aighneacht foirme le a:exc: ~django.core.exceptions.validationError nuair a bhailítear an tsamhail féin sula ndéantar é a shábháil.

#### `ModelAdmin.get_changelist(request, **kwargs)`

Filleann sé an rang `Changelist` atá le húsáid le haghaidh liostú. De réir réamhshocraithe, úsáidtear `django.contrib.admin.views.main.changeList`. Trí an rang seo a oidhreacht is féidir leat iompar an liostaithe a athrú.

#### `ModelAdmin.get_changelist_form(request, **kwargs)`

Tuairisceann a:class: ~django.forms.ModelForm rang le húsáid sa `FormSet` ar an leathanach liosta athraithe. Chun foirm saincheaptha a úsáid, mar shampla:

```
from django import forms

class MyForm(forms.ModelForm):
    pass

class MyModelAdmin(admin.ModelAdmin):
    def get_changelist_form(self, request, **kwargs):
        return MyForm
```

> **Fág an tréith ``Meta.Model ``**
>
> Má shainmhíníonn tú an tréith `Meta.Model` ar a:class: ~Django.Forms.ModelForm, ní mór duit an tréith `Meta.Fields` a shainiú freisin (nó an tréith `Meta.Exclude`). Mar sin féin, déanann `ModelAdmin` neamhaird ar an luach seo, agus é a shárú leis an tréith: attr: ModelAdmin.list\_editable. Is é an réiteach is éasca an tréith Meta.Model \`\`a fhágáil, ós rud é go soláthróidh \`\`ModelAdmin\` an tsamhail cheart le húsáid.

#### `ModelAdmin.get_changelist_formset(request, **kwargs)`

Tuairisceáin a:ref: ModelFormSet \<model-formsets\>\`aicme le húsáid ar an leathanach liosta athraithe má úsáidtear: attr: \`~ModelAdmin.list\_editable. Chun tacar foirme saincheaptha a úsáid, mar shampla:

```
from django.forms import BaseModelFormSet

class MyAdminFormSet(BaseModelFormSet):
    pass

class MyModelAdmin(admin.ModelAdmin):
    def get_changelist_formset(self, request, **kwargs):
        kwargs["formset"] = MyAdminFormSet
        return super().get_changelist_formset(request, **kwargs)
```

#### `ModelAdmin.lookup_allowed(lookup, value, request)`

Is féidir na rudaí ar leathanach an liosta athraithe a scagadh le cuardaigh ó shreang fiosrúcháin an URL. Seo mar a oibríonn: attr: list\_filter, mar shampla. Tá na cuardaigh cosúil leis an méid a úsáidtear in:meth: .querySet.filter (m.sh. user\_\_email= [user@example.com](mailto:user@example.com) ). Ós rud é gur féidir leis an úsáideoir na cuardaigh sa sreangán fiosrúcháin a ionramháil, caithfear iad a shláintiú chun nochtadh sonraí neamhúdaraithe a chosc.

Tugtar cosán cuardaigh don modh ````lookup_allow () ``ón sreang ceisteanna (m.sh. ```user__email'````), an luach comhfhreagrach (m.sh. `` `user@example.com ' ``), agus an t-iarratas, agus tugann sé boolean ag tabhairt le fios an bhfuil ceadaithe ag scagadh `QuerySet` ag baint úsáide as na paraiméadair. Má fhilleann ````lookup_allow () ```False````,, DisallowedModelAdminlookup\`\` (fo-aicme de:exc: ~Django.Core.Exceptions.SuspiciousOperation) a ardaítear.

De réir réamhshocraithe, ceadaíonn lookup\_allow () rochtain ar réimsí áitiúla samhail, cosáin réimse a úsáidtear in:attr: ~ModelAdmin.list\_filter (ach ní cosáin ó:meth: ~ModelAdmin.get\_list\_filter), agus cuardaigh atá ag teastáil le haghaidh: attr: ~Django.db.models.foreignkey.limit\_choices\_to feidhmiú i gceart in:attr: ~django.contrib.admin.modeladmin.raw\_id\_fields.

Athraigh an modh seo chun na cuardaigh a cheadaítear do d'fho-aicme: ~django.contrib.admin.modelAdmin a shaincheapadh.

#### `ModelAdmin.has_view_permission(request, obj=None)`

Ba chóir `True` a thabhairt ar ais má cheadaítear féachaint ar `obj`, False\` ar shlí eile. Más é obj `None`, ba cheart `True` nó False\` a thabhairt ar ais chun a léiriú an bhfuil ceadaithe féachaint ar rudaí den chineál seo go ginearálta (m.sh., léirmhínítear `False` mar a chiallaíonn nach ceadaítear don úsáideoir reatha aon rud den chineál seo a fheiceáil).

Tugann an cur i bhfeidhm réamhshocraithe `True` ar ais má tá an cead “athraigh” nó “féachaint” ag an úsáideoir.

#### `ModelAdmin.has_add_permission(request)`

Ba chóir `True` a thabhairt ar ais má cheadaítear réad a chur leis, `False` ar shlí eile.

#### `ModelAdmin.has_change_permission(request, obj=None)`

Ba chóir `True` a thabhairt ar ais má cheadaítear `obj` eagarthóireacht, `False` ar shlí eile. Má tá `obj` `None`, ba cheart `True` nó False\` a thabhairt ar ais chun a léiriú an bhfuil ceadaithe eagarthóireacht rudaí den chineál seo i gcoitinne (m.sh., léirmhínítear `False` mar a chiallaíonn nach ceadaítear don úsáideoir reatha aon rud den chineál seo a chur in eagar).

#### `ModelAdmin.has_delete_permission(request, obj=None)`

Ba chóir `True` a thabhairt ar ais má cheadaítear `obj` a scriosadh, `False` ar shlí eile. Má tá `obj` `None`, ba cheart `True` nó False\` a thabhairt ar ais chun a léiriú an gceadaítear rudaí den chineál seo a scriosadh go ginearálta (m.sh., léirmhínítear `False` mar a chiallaíonn nach ceadaítear don úsáideoir reatha aon rud den chineál seo a scriosadh).

#### `ModelAdmin.has_module_permission(request)`

Ba chóir go bhfilleadh `True` má cheadaítear an modúl a thaispeáint ar leathanach innéacs an riaracháin agus rochtain a fháil ar leathanach innéacs an mhodúil, `False` ar shlí eile. \<django.contrib.auth.models.User.has\_module\_perms\>Úsáid:Meth: User.has\_module\_perms () \`de réir réamhshocraithe. Ní chuireann sé srian ar rochtain ar an radharc, cuir, athrú nó scriosadh radhairc, :meth: \`~modeladmin.has\_view\_permission, :meth: ~modeladmin.has\_add\_permission, :meth: ~ModelAdmin.has\_Change\_Permission, agus:meth: ~ModelAdmin.has\_delete\_permission a úsáid chuige sin.

#### `ModelAdmin.get_queryset(request)`

Tugann an modh get\_queryset\` ar ModelAdmin\` a: class: ~django.db.models.queryset de gach cás samhail is féidir leis an suíomh riaracháin a chur in eagar. Cás úsáide amháin chun an modh seo a shárú is ea rudaí atá faoi úinéireacht an úsáideora logáilte isteach a thaispeáint:

```
class MyModelAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super().get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(author=request.user)
```

#### `ModelAdmin.message_user(request, message, level=messages.INFO, extra_tags='', fail_silently=False)`

Sends a message to the user using the [`django.contrib.messages`](/ga/6.1/ref/contrib/messages/#module-django.contrib.messages)
backend. See the [custom ModelAdmin example](/ga/6.1/ref/contrib/admin/actions/#custom-admin-action).

Ligeann argóintí eochairfhocal duit leibhéal na teachtaireachta a athrú, clibeanna CSS breise a chur leis, nó teip go ciúin mura bhfuil an creat contrib.messages suiteáilte. Meaitseálann na hargóintí eochairfhocal seo leo siúd le haghaidh: func: django.contrib.messages.add\_message, féach doiciméadú na feidhme sin le haghaidh tuilleadh sonraí. Difríocht amháin is ea go bhféadfar an leibhéal a rith mar lipéad teaghrán i dteannta le sláin/tairiseach.

#### `ModelAdmin.get_paginator(request, queryset, per_page, orphans=0, allow_empty_first_page=True)`

Tugann sé sampla den paginator ar ais le húsáid don radharc seo. De réir réamhshocraithe, cruthaíonn sé sampla de:attr: paginator.

#### `ModelAdmin.response_add(request, obj, post_url_continue=None)`

Cinneann sé an:class: ~django.http.httpResponse don chéime:meth: add\_view.

Glaofar response\_add\` tar éis an fhoirm riaracháin a chur isteach agus díreach tar éis an réad agus na cásanna gaolmhara go léir a chruthú agus a shábháil. Is féidir leat é a shárú chun an t-iompar réamhshocraithe a athrú tar éis an réad a chruthú.

#### `ModelAdmin.response_change(request, obj)`

Cinneann sé an:class: ~django.http.httpResponse don chéime:meth: change\_view.

Glaofar response\_change\` tar éis an fhoirm riaracháin a chur isteach agus díreach tar éis an réad agus na cásanna gaolmhara go léir a shábháil. Is féidir leat é a shárú chun an t-iompar réamhshocraithe a athrú tar éis an réad a athrú.

#### `ModelAdmin.response_delete(request, obj_display, obj_id)`

Cinneann sé an:class: ~django.http.httpResponse don chéime:meth: delete\_view.

Glaofar ar response\_delete\` tar éis an réad a scriosadh. Is féidir leat é a shárú chun an t-iompar réamhshocraithe a athrú tar éis an réad a scriosadh.

Is teaghrán é `obj_display` le hainm an réad scriosta.

Is é `obj_id` an t-aitheantóir sraitheach a úsáidtear chun an réad atá le scriosadh a aisghabháil.

#### `ModelAdmin.get_formset_kwargs(request, obj, inline, prefix)`

Crúca chun na hargóintí eochairfhocal a shaincheapadh chuig tógálaí foirmshraith. Mar shampla, chun `iarrat` a chur chuig foirmeacha foirmeacha:

```
class MyModelAdmin(admin.ModelAdmin):
    def get_formset_kwargs(self, request, obj, inline, prefix):
        return {
            **super().get_formset_kwargs(request, obj, inline, prefix),
            "form_kwargs": {"request": request},
        }
```

Is féidir leat é a úsáid freisin chun `initial` a shocrú d'fhoirmeacha foirmeacha.

#### `ModelAdmin.get_changeform_initial_data(request)`

Croca do na sonraí tosaigh ar fhoirmeacha athraithe riaracháin. De réir réamhshocraithe, tugtar luachanna tosaigh do réimsí ó pharaiméadair GET\`. Mar shampla, `? name=initial_value` socróidh luach tosaigh an réimse `ainm` mar `luach_inicial`.

Ba chóir don modh seo foclóir a thabhairt ar ais sa fhoirm `{'fieldname': 'fieldval'}`:

```
def get_changeform_initial_data(self, request):
    return {"name": "custom_initial_value"}
```

#### `ModelAdmin.get_deleted_objects(objs, request)`

A hook for customizing the deletion process of the [`delete_view()`](#django.contrib.admin.ModelAdmin.delete_view) and
the "delete selected" [action](/ga/6.1/ref/contrib/admin/actions/).

Is é an argóint ```objs ``is athraitheach aonchineálach de rudaí (``QuerySet``` nó liosta cásanna samhail) atá le scriosadh, agus is é `request` an:class: ~django.http.httpRequest.

Caithfidh an modh seo 4-tuple de `(deleted_objects, model_count, perms_needed, protected)` a thabhairt ar ais.

Is liosta de na teaghráin is ea deleted\_objects\` a léiríonn na rudaí go léir a scriosfar. Má tá aon rudaí gaolmhara le scriosadh, tá an liosta neadaithe agus tá na rudaí gaolmhara sin san áireamh. Déantar an liosta a fhormáidiú sa teimpléad ag baint úsáide as an scagair:tfilter: unordered\_list.

Is foclóir é `model_count` mapáil gach samhail's:attr: ~django.db.models.options.verbose\_name\_plural ar líon na rudaí a scriosfar.

Is é `perms_needed` sraith de:attr: ~django.db.models.options.verbose\_names de na samhlacha nach bhfuil cead ag an úsáideoir a scriosadh.

Is liosta de na teaghráin a léiríonn na rudaí gaolmhara cosanta go léir nach féidir iad a scriosadh. Taispeántar an liosta sa teimpléad.

#### Modhanna eile

#### `ModelAdmin.add_view(request, form_url='', extra_context=None)`

Amharc Django don leathanach breise samhail samhail. Féach an nóta thíos.

#### `ModelAdmin.change_view(request, object_id, form_url='', extra_context=None)`

Amharc Django don leathanach eagarthóireachta sampla samhail. Féach an nóta thíos.

#### `ModelAdmin.changelist_view(request, extra_context=None)`

Amharc Django don leathanach athraithe cásanna samhail liosta/gníomhartha. Féach an nóta thíos.

#### `ModelAdmin.delete_view(request, object_id, extra_context=None)`

Amharc Django do leathanach dearbhaithe scriosadh samhail (í) samhail. Féach an nóta thíos.

#### `ModelAdmin.history_view(request, object_id, extra_context=None)`

Amharc Django don leathanach a thaispeánann stair an mhodhnaithe do shampla samhail ar leith.

Murab ionann agus na modhanna `ModelAdmin` de chineál haca a sonraíodh sa chuid roimhe seo, tá na cúig mhodh seo deartha i ndáiríre chun iad a ghairm mar thuairimí Django ó láimhseálaí seolta URL an fheidhmchláir riaracháin chun na leathanaigh a dhéileálann le cásanna samhail oibríochtaí CRUD a rinneadh. Mar thoradh air sin, athróidh na modhanna seo a shárú go hiomlán iompar an fheidhmchláir riaracháin go suntasach.

Cúis choitianta amháin chun na modhanna seo a shárú is ea na sonraí comhthéacs a chuirtear ar fáil don teimpléad a léiríonn an dearcadh a mhéadú. Sa sampla seo a leanas, cuirtear an dearcadh athraithe a athrú ionas go gcuirtear roinnt sonraí mapála breise ar fáil don teimpléad rindreáilte nach mbeadh ar fáil ar shlí eile:

```
class MyModelAdmin(admin.ModelAdmin):
    # A template for a very customized change view:
    change_form_template = "admin/myapp/extras/openstreetmap_change_form.html"

    def get_osm_info(self):
        # ...
        pass

    def change_view(self, request, object_id, form_url="", extra_context=None):
        extra_context = extra_context or {}
        extra_context["osm_data"] = self.get_osm_info()
        return super().change_view(
            request,
            object_id,
            form_url,
            extra_context=extra_context,
        )
```

Tugann na tuairimí seo ar ais: class: ~django.template.Response.TemplateResponse cásanna a ligeann duit na sonraí freagartha a shaincheapadh go héasca sula ndéantar iad a rindreáil. Le haghaidh tuilleadh sonraí, féach an:doc: TemplateResponse doiciméadúcháin \</ref/template-response\>.

### Sainmhínithe sócmhainní `ModelAdmin`

Tá amanna ann nuair ba mhaith leat beagán CSS agus/nó JavaScript a chur leis na tuairimí a chur leis na tuairimí a chur leis /athraigh. Is féidir é seo a chur i gcrích trí rang istigh ```Meáin ``a úsáid ar do `ModelAdmin```:

```
class ArticleAdmin(admin.ModelAdmin):
    class Media:
        css = {
            "all": ["my_styles.css"],
        }
        js = ["my_code.js"]
```

Tá an aip: doc: staticfiles \`réasúnaí:socrú: \`STATIC\_URL (nó\</ref/contrib/staticfiles\> :socrú: MEDIA\_URL más:socrú: ```STATIC_URL` ``None```) le haon chosáin sócmhainní. \<form-asset-paths\>Tá na rialacha céanna i bhfeidhm as:ref: sainmhínithe rialta sócmhainní ar fhoirmeacha .

#### jQuery

Baineann JavaScript admin Django úsáid as an leabharlann jQuery \_.

Chun coinbhleachtaí a sheachaint le scripteanna nó leabharlanna a sholáthraíonn an úsáideoir, déantar jQuery Django (leagan 3.7.1) spás ainmneacha mar “Django.jQuery”. Más mian leat jQuery a úsáid i do JavaScript riaracháin féin gan an dara cóip a áireamh, is féidir leat an réad ```Django.jQuery ``a úsáid ar changelist agus tuairimí a chur leis /eagar. <assets-as-a-static-definition>Chomh maith leis sin, ní mór d'fhoirmeacha nó giuirléidí riaracháin féin ag brath ar ``django.jQuery``` js= \['admin/js/jquery.init.js',...\] a shonrú nuai:ref: sócmhainní meán foirm a dhearbhú .

Éilíonn an rang:Class: ModelAdmin jQuery de réir réamhshocraithe, mar sin ní gá jQuery a chur le liosta d'acmhainní meán ModelAdmin\` mura bhfuil riachtanas sonrach agat. Mar shampla, má theastaíonn uait go mbeidh leabharlann jQuery sa spás ainmneacha domhanda (mar shampla agus breiseáin jQuery tríú páirtí á úsáid agat) nó má theastaíonn leagan níos nuaí de jQuery uait, beidh ort do chóip féin a chur san áireamh.

Soláthraíonn Django leaganacha neamhchomhbhrúite agus 'minified' de jQuery araon, mar ```jquery.js ``agus ``jquery.min.js``` faoi seach.

[`ModelAdmin`](#django.contrib.admin.ModelAdmin) and [`InlineModelAdmin`](#django.contrib.admin.InlineModelAdmin) have a `media` property
that returns a list of `Media` objects which store paths to the JavaScript
files for the forms and/or formsets. If [`DEBUG`](/ga/6.1/ref/settings/#std-setting-DEBUG) is `True` it will
return the uncompressed versions of the various JavaScript files, including
`jquery.js`; if not, it will return the 'minified' versions.

## `InlineModelAdmin` rudaí

#### `class InlineModelAdmin`

#### `class TabularInline`

#### `class StackedInline`

Tá sé de chumas ag an gcomhéadan riaracháin samhlacha a chur in eagar ar an leathanach céanna le samhail tuismitheora. Tugtar inlines orthu seo. Cuir i gcás go bhfuil an dá mhúnla seo agat:

```
from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
```

Is féidir leat na leabhair a d'údar údar a chur in eagar ar leathanach an údair. Cuireann tú inlines le samhail trí iad a shonrú i `ModelAdmin.inlines`:

```
from django.contrib import admin
from myapp.models import Author, Book

class BookInline(admin.TabularInline):
    model = Book

class AuthorAdmin(admin.ModelAdmin):
    inlines = [
        BookInline,
    ]

admin.site.register(Author, AuthorAdmin)
```

Soláthraíonn Django dhá fho-aicme de `InlineModelAdmin` agus is iad seo:

- [`TabularInline`](#django.contrib.admin.TabularInline)
- [`StackedInline`](#django.contrib.admin.StackedInline)

Níl an difríocht idir an dá cheann seo ach an teimpléad a úsáidtear chun iad a léiriú.

### Roghanna `InlineModelAdmin`

Roinneann `InlineModelAdmin` go leor de na gnéithe céanna le `ModelAdmin`, agus cuireann sé cuid dá chuid féin leis (sainmhínítear na gnéithe roinnte i ndáiríre sa sáraicme `BaseModelAdmin`). Is iad na gnéithe roinnte:

- [`form`](#django.contrib.admin.InlineModelAdmin.form)
- [`fieldsets`](#django.contrib.admin.ModelAdmin.fieldsets)
- [`fields`](#django.contrib.admin.ModelAdmin.fields)
- [`formfield_overrides`](#django.contrib.admin.ModelAdmin.formfield_overrides)
- [`delete_confirmation_max_display`](#django.contrib.admin.ModelAdmin.delete_confirmation_max_display)
- [`exclude`](#django.contrib.admin.ModelAdmin.exclude)
- [`filter_horizontal`](#django.contrib.admin.ModelAdmin.filter_horizontal)
- [`filter_vertical`](#django.contrib.admin.ModelAdmin.filter_vertical)
- [`ordering`](#django.contrib.admin.ModelAdmin.ordering)
- [`prepopulated_fields`](#django.contrib.admin.ModelAdmin.prepopulated_fields)
- [`get_exclude()`](#django.contrib.admin.ModelAdmin.get_exclude)
- : meth: ~ModelAdmin.get\_fieldsets
- [`get_queryset()`](#django.contrib.admin.ModelAdmin.get_queryset)
- [`radio_fields`](#django.contrib.admin.ModelAdmin.radio_fields)
- [`readonly_fields`](#django.contrib.admin.ModelAdmin.readonly_fields)
- [`view_on_site`](#django.contrib.admin.ModelAdmin.view_on_site)
- [`empty_value_display`](#django.contrib.admin.ModelAdmin.empty_value_display)
- [`autocomplete_fields`](#django.contrib.admin.ModelAdmin.autocomplete_fields)
- [`raw_id_fields`](#django.contrib.admin.InlineModelAdmin.raw_id_fields)
- [`formfield_for_choice_field()`](#django.contrib.admin.ModelAdmin.formfield_for_choice_field)
- [`formfield_for_foreignkey()`](#django.contrib.admin.ModelAdmin.formfield_for_foreignkey)
- [`formfield_for_manytomany()`](#django.contrib.admin.ModelAdmin.formfield_for_manytomany)
- [`has_module_permission()`](#django.contrib.admin.ModelAdmin.has_module_permission)

Cuireann an rang `InlineModelAdmin` leis nó a shaincheapadh:

#### `InlineModelAdmin.model`

An tsamhail atá ag baint úsáide as an inlíne. Tá sé seo ag teastáil.

#### `InlineModelAdmin.fk_name`

Ainm an eochair eachtrach ar an tsamhail. I bhformhór na gcásanna déileálfar leis seo go huathoibríoch, ach caithfear `fk_name` a shonrú go sainráite má tá níos mó ná eochair eachtrach amháin ann don tsamhail thuismitheora céanna.

#### `InlineModelAdmin.formset`

Tá sé seo réamhshocraithe chuig: aicme: ~django.forms.models.baseinlineFormSet. Is féidir go leor féidearthachtaí saincheaptha a thabhairt duit a úsáid do shraith foirme féin. \<model-formsets\>Tógtar inlínte timpeall: ref: model formsets .

#### `InlineModelAdmin.form`

Tá an luach do foirm \`\`réamhshocraithe go \`\`ModelForm\`. Seo an rud a chuirtear trí:func: ~django.forms.models.inlineformset\_factory agus an foirmset á chruthú don inlíne seo.

Mar shampla féach an rannáit:ref: admin-custom-validation.

> **Warning**
>
> Agus bailíochtú saincheaptha á scríobh le haghaidh foirmeacha InlineModelAdmin\`, bí cúramach maidir le bailíochtú scríbhneoireachta atá ag brath ar ghnéithe den tsamhail tuismitheora. Má theipeann an tsamhail tuismitheora a bhailíochtú, féadfar é a fhágáil i riocht neamhchomhsheasmhach mar a thuairiscítear sa rabhadh in:ref: validation-on-modelform.

#### `InlineModelAdmin.classes`

Liosta nó tuple ina bhfuil ranganna breise CSS le cur i bhfeidhm ar an tacar réimse a rinneadh do na línte inlíne. Réamhshocraithe go `None`. Mar is amhlaidh le ranganna atá cumraithe in:attr: ~ModelAdmin.FieldSets, titeofar inlínte le rang collise\` i dtosach ag baint úsáide as giuirléid leathnaithe.

#### `InlineModelAdmin.extra`

Rialaíonn sé seo líon na bhfoirmeacha breise a thaispeánfaidh an tacar foirme chomh maith leis na foirmeacha tosaigh. Réamhshocraithe go 3. Féach na:doc: formsets doiciméadach le haghaidh tuilleadh eolais. \</topics/forms/formsets\>

Maidir le húsáideoirí a bhfuil brabhsálaithe cumasaithe ag JavaScript acu, cuirtear nasc “Cuir eile leis” ar fáil chun aon líon inlíne breise a chur leis i dteannta leo siúd a chuirtear ar fáil mar thoradh ar an argóint `breise`.

Ní bheidh an nasc dinimiciúil le feiceáil má sháraíonn líon na bhfoirmeacha atá ar taispeáint faoi láthair `max_num`, nó mura bhfuil JavaScript cumasaithe ag an úsáideoir.

[`InlineModelAdmin.get_extra()`](#django.contrib.admin.InlineModelAdmin.get_extra) also allows you to customize the number
of extra forms.

#### `InlineModelAdmin.max_num`

Rialaíonn sé seo an líon uasta na bhfoirmeacha atá le taispeáint san inlíne. Ní bhaineann sé seo go díreach le líon na rudaí, ach is féidir má tá an luach beag go leor. Féach: ref: model-formsets-max-num le haghaidh tuilleadh faisnéise.

[`InlineModelAdmin.get_max_num()`](#django.contrib.admin.InlineModelAdmin.get_max_num) also allows you to customize the
maximum number of extra forms.

#### `InlineModelAdmin.min_num`

Rialaíonn sé seo an líon íosta foirmeacha atá le taispeáint san inlíne. Féach: func: ~django.forms.models.modelformset\_factory le haghaidh tuilleadh faisnéise.

[`InlineModelAdmin.get_min_num()`](#django.contrib.admin.InlineModelAdmin.get_min_num) also allows you to customize the
minimum number of displayed forms.

#### `InlineModelAdmin.raw_id_fields`

De réir réamhshocraithe, úsáideann riarachán Django comhéadan bosca roghnaithe (\<select\>) do réimsí atá ForeignKey\`. Uaireanta níl tú ag iarraidh an lasbhreas a thabhairt faoi na cásanna gaolmhara go léir a roghnú le taispeáint sa anuas anuas.

Is liosta réimsí é `raw_id_fields` ar mhaith leat a athrú go giuirléid `Input` le haghaidh ForeignKey\` nó `ManyTomanyField`:

```
class BookInline(admin.TabularInline):
    model = Book
    raw_id_fields = ["pages"]
```

#### `InlineModelAdmin.template`

An teimpléad a úsáidtear chun an líne a léiriú ar an leathanach.

#### `InlineModelAdmin.verbose_name`

Athrú chuig an:attr: ~django.db.models.options.verbose\_name ó rang Meta\` istigh an tsamhail.

#### `InlineModelAdmin.verbose_name_plural`

Athrú chuig an: attr: ~django.db.models.options.verbose\_name\_plural ó rang Meta\` istigh an tsamhail. Mura dtugtar é seo agus mura sainmhínítear an:attr: .inlineModelAdmin.verbose\_name, úsáidfidh Django:attr: .inlineModelAdmin.verbose\_name \+ `'s'`.

#### `InlineModelAdmin.can_delete`

Sonraíonn sé cibé an féidir rudaí inlíne a scriosadh sa líne nó nach bhfuil. Réamhshocraithe go `True`.

#### `InlineModelAdmin.show_change_link`

Sonraíonn sé an bhfuil nasc leis an bhfoirm athraithe ag rudaí inlíne is féidir a athrú sa riarachán nó nach bhfuil. Réamhshocraithe go `False`.

#### `InlineModelAdmin.get_formset(request, obj=None, **kwargs)`

Tuairisceáin a:class: ~Django.Forms.Models.BaseinlineFormSet rang le húsáid i riarachán tuairimí a chur leis /athraigh. Is é `obj` an tuismitheoir réad atá á chur in eagar nó None nuair a chuirtear tuismitheoir nua leis. Féach an sampla le haghaidh: class: ModelAdmin.get\_formSets\_with\_inlines.

#### `InlineModelAdmin.get_extra(request, obj=None, **kwargs)`

Tugann sé líon na bhfoirmeacha inlíne breise atá le húsáid ar ais. De réir réamhshocraithe, filleann an tréith: attr: InlineModelAdmin.extra.

Athraigh an modh seo chun líon na bhfoirmeacha inlíne breise a chinneadh go cláraitheach. Mar shampla, d'fhéadfadh sé seo a bheith bunaithe ar an samhail samhail (a rith mar an argóint eochairfhocal obj ):

```
class BinaryTreeAdmin(admin.TabularInline):
    model = BinaryTree

    def get_extra(self, request, obj=None, **kwargs):
        extra = 2
        if obj:
            return extra - obj.binarytree_set.count()
        return extra
```

#### `InlineModelAdmin.get_max_num(request, obj=None, **kwargs)`

Tugann sé an líon uasta na bhfoirmeacha inlíne breise le húsáid ar ais. De réir réamhshocraithe, filleann an tréith: attr: inlineModelAdmin.max\_num.

Athraigh an modh seo chun líon uasta na bhfoirmeacha inlíne a chinneadh go cláraitheach. Mar shampla, d'fhéadfadh sé seo a bheith bunaithe ar an samhail samhail (a rith mar an argóint eochairfhocal obj ):

```
class BinaryTreeAdmin(admin.TabularInline):
    model = BinaryTree

    def get_max_num(self, request, obj=None, **kwargs):
        max_num = 10
        if obj and obj.parent:
            return max_num - 5
        return max_num
```

#### `InlineModelAdmin.get_min_num(request, obj=None, **kwargs)`

Tugann sé an líon íosta foirmeacha inlíne atá le húsáid ar ais. De réir réamhshocraithe, filleann an tréith: attr: inlineModelAdmin.min\_num.

Athraigh an modh seo chun líon íosta na bhfoirmeacha inlíne a chinneadh go cláraithe. Mar shampla, d'fhéadfadh sé seo a bheith bunaithe ar an samhail samhail (a rith mar an argóint eochairfhocal obj ).

#### `InlineModelAdmin.has_add_permission(request, obj)`

Ba chóir go bhfilleadh `True` má cheadaítear réad inlíne a chur leis, `False` ar shlí eile. Is é `obj` an tuismitheoir réad atá á chur in eagar nó None nuair a chuirtear tuismitheoir nua leis.

#### `InlineModelAdmin.has_change_permission(request, obj=None)`

Ba chóir go bhfaighidh `True` a thabhairt ar ais má cheadaítear réad inlíne a chur in eagar, `False` ar shlí eile. Is é `obj` an tuismitheoir réad atá á chur in eagar.

#### `InlineModelAdmin.has_delete_permission(request, obj=None)`

Ba chóir go bhfilleadh `True` má cheadaítear réad inlíne a scriosadh, `False` ar shlí eile. Is é `obj` an tuismitheoir réad atá á chur in eagar.

> **Note**
>
> Is é an argóint `obj` a chuirtear chuig modhanna `InlineModelAdmin` ná an tuismitheoir réad atá á chur in eagar nó None nuair a chuirtear tuismitheoir nua leis.

### Ag obair le samhail le dhá eochracha eachtracha nó níos mó don tsamhail thuismitheora céanna

Uaireanta is féidir níos mó ná eochair eachtrach amháin a bheith agat don tsamhail chéanna. Tóg an tsamhail seo mar shampla:

```
from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=128)

class Friendship(models.Model):
    to_person = models.ForeignKey(
        Person, on_delete=models.CASCADE, related_name="friends"
    )
    from_person = models.ForeignKey(
        Person, on_delete=models.CASCADE, related_name="from_friends"
    )
```

Más mian leat inlíne a thaispeáint ar na leathanaigh riaracháin Duine a chur leis /athraigh ní mór duit an eochair eachtrach a shainiú go sainráite ós rud é nach féidir leis sin a dhéanamh go huathoibríoch:

```
from django.contrib import admin
from myapp.models import Friendship, Person

class FriendshipInline(admin.TabularInline):
    model = Friendship
    fk_name = "to_person"

class PersonAdmin(admin.ModelAdmin):
    inlines = [
        FriendshipInline,
    ]

admin.site.register(Person, PersonAdmin)
```

### Ag obair le go leor samhlacha

De réir réamhshocraithe, taispeánfar giuirléidí riaracháin le haghaidh caidrimh go leor ar cibé múnla ina bhfuil an tagairt iarbhír don: class: ~django.db.models.manyToManyField. Ag brath ar do shainmhíniú ``` ModelAdmin`, beidh gach réimse go leor i do mhúnla ionadaíocht le HTML `` ```, caighdeánach, scagaire cothrománach nó ingearach, nó giuirléid `raw_id_fields <select multiple>`. Mar sin féin, is féidir inlíne a chur in ionad na giuirléidí seo.

Cuir i gcás go bhfuil na samhlacha seo a leanas againn:

```
from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=128)

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, related_name="groups")
```

Más mian leat caidreamh go leor a thaispeáint ag baint úsáide as inlíne, is féidir leat é sin a dhéanamh trí réad `inlineModelAdmin` a shainiú don chaidreamh:

```
from django.contrib import admin
from myapp.models import Group

class MembershipInline(admin.TabularInline):
    model = Group.members.through

class GroupAdmin(admin.ModelAdmin):
    inlines = [
        MembershipInline,
    ]
    exclude = ["members"]

admin.site.register(Group, GroupAdmin)
```

Tá dhá ghné is fiú a thabhairt faoi deara sa sampla seo.

Ar dtús - tagairtí aicme `MembershipInline` Group.Members.Through . Is tagairt é an tréith trí don tsamhail a bhainistíonn an gaol go leor. Cruthaíonn Django an tsamhail seo go huathoibríoch nuair a shainmhíníonn tú réimse go leor.

Ar an dara dul síos, ní mór don Groupadmin\` an réimse baill a eisiamh de láimh. Taispeánann Django giuirléid riaracháin do réimse go leor ar an tsamhail a shainmhíníonn an gaol (sa chás seo, Grúpa ). Más mian leat samhail inlíne a úsáid chun an caidreamh go leor a léiriú, ní mór duit a rá le riarachán Django ná\* an giuirléid seo a thaispeáint - ar shlí eile beidh dhá ghuirléid agat ar do leathanach riaracháin chun an gaol a bhainistiú.

Tabhair faoi deara nach spreagtar na comharthaí: data: ~django.db.models.signals.m2m\_changed nuair a úsáidtear an teicníc seo. Tá sé seo toisc nach bhfuil ach samhail le dhá phríomhréimse eachtracha eachtrach seachas caidreamh go leor le go leor.

Ar gach bealach eile, tá an InlineModelAdmin\` díreach mar an gcéanna le haon cheann eile. Is féidir leat an cuma a shaincheapadh ag baint úsáide as aon cheann de na gnáthairíonna ModelAdmin\`.

### Ag obair le samhlacha idirghabhála go leor

Nuair a shonraíonn tú samhail idirghabhála ag baint úsáide as an argóint through chuig a:class: ~django.db.models.manyToManyField, ní thaispeánfaidh an riarachán giuirléid de réir réamhshocraithe. Tá sé seo toisc go dteastaíonn níos mó faisnéise ó gach cás den tsamhail idirghabhálaí sin ná mar a d'fhéadfaí a thaispeáint i ngiuirléid amháin, agus beidh an leagan amach a theastaíonn le haghaidh giuirléidí iolracha

Mar sin féin, ba mhaith linn fós a bheith in ann an fhaisnéis sin a chur in eagar inlíne. Ar ámharaí an tsaoil, is féidir linn é seo a dhéanamh le samhlacha riaracháin inlíne. Cuir i gcás go bhfuil na samhlacha seo a leanas againn:

```
from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=128)

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through="Membership")

class Membership(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    group = models.ForeignKey(Group, on_delete=models.CASCADE)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)

    class Meta:
        constraints = [
            models.UniqueConstraint(
                fields=["person", "group"], name="unique_person_group"
            )
        ]
```

Is é an chéad chéim chun an tsamhail idirmheánach seo a thaispeáint sa riarachán ná rang inlíne a shainiú don tsamhail Ballraíocht :

```
class MembershipInline(admin.TabularInline):
    model = Membership
    extra = 1
```

Úsáideann an sampla seo na luachanna réamhshocraithe `InlineModelAdmin` don tsamhail Ballraíocht , agus cuireann sé teorainn leis na foirmeacha breise le ceann amháin. D'fhéadfaí é seo a shaincheapadh ag baint úsáide as aon cheann de na roghanna atá ar fáil do ranganna InlineModelAdmin\`.

Anois cruthaigh tuairimí riaracháin do na samhlacha `Person` agus `Grúpa`:

```
class PersonAdmin(admin.ModelAdmin):
    inlines = [MembershipInline]

class GroupAdmin(admin.ModelAdmin):
    inlines = [MembershipInline]
```

Faoi dheireadh, cláraigh do mhúnlaí ```Person` agus ``Grúpa``` leis an suíomh riaracháin:

```
admin.site.register(Person, PersonAdmin)
admin.site.register(Group, GroupAdmin)
```

Anois tá do shuíomh riaracháin bunaithe chun rudaí ```Ballraíocht ``a chur in eagar inlíne ó na leathanaigh sonraí ``Duine``` nó Grúpa\`.

### Ag baint úsáide as caidreamh cineálach mar inlíne

Is féidir inlíne a úsáid le rudaí a bhaineann go ginearálta. Abair go bhfuil na samhlacha seo a leanas agat:

```
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.db import models

class Image(models.Model):
    image = models.ImageField(upload_to="images")
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey("content_type", "object_id")

class Product(models.Model):
    name = models.CharField(max_length=100)
```

Más mian leat eagarthóireacht agus cruthú sampla `Image` ar an Product\` a cheadú, cuirte/athraigh tuairimí is féidir leat a úsáid:class: ~django.contrib.contentTypes.admin.GenericTabularInline nó:class: ~django.contrib.contentTypes.admin.GenericStackedInline (dá fho-aicme de:class: Django.Contrib.ContentTypes.Admin.GenericStackedInline Jango.Contrib.ContentTypes.Admin.GenericInlineModelAdmin\`) arna sholáthar ar:mod: ~django.contrib.contenttypes.admin. Cuireann siad leagan amach amhairc táblaíocha agus cruachta i bhfeidhm do na foirmeacha a léiríonn na rudaí inlíne, faoi seach, díreach cosúil lena gcomhghleacaithe neamh Iompraíonn siad díreach cosúil le haon inlíne eile. I do admin.py\` don aip sampla seo:

```
from django.contrib import admin
from django.contrib.contenttypes.admin import GenericTabularInline

from myapp.models import Image, Product

class ImageInline(GenericTabularInline):
    model = Image

class ProductAdmin(admin.ModelAdmin):
    inlines = [
        ImageInline,
    ]

admin.site.register(Product, ProductAdmin)
```

Féach na:doc: contenttypes doiciméadach le haghaidh faisnéise níos sainiúla. \</ref/contrib/contenttypes\>

## Bailíochtú saincheaptha a chur leis an riarachán

The admin uses [`ModelForm`](/ga/6.1/topics/forms/modelforms/#django.forms.ModelForm). To add custom validation,
provide your own `ModelForm`:

```
class ArticleForm(forms.ModelForm):
    def clean_name(self):
        # do something that validates your data
        return self.cleaned_data["name"]
```

Then configure the [`ModelAdmin`](#django.contrib.admin.ModelAdmin) to use the form:

```
class ArticleAdmin(admin.ModelAdmin):
    form = ArticleForm
```

Or configure an [`InlineModelAdmin`](#django.contrib.admin.InlineModelAdmin) to use the form:

```
class ArticleInline(admin.TabularInline):
    model = Article
    form = ArticleForm
```

It is important that you use a `ModelForm`; otherwise things can break. See
the [forms](/ga/6.1/ref/forms/) documentation on [custom validation](/ga/6.1/ref/forms/validation/) and, more specifically, the
[model form validation notes](/ga/6.1/topics/forms/modelforms/#overriding-modelform-clean-method) for more
information.

## Teimpléid riaracháin forchoitianta

Is féidir leat go leor de na teimpléid a úsáideann an modúl riaracháin chun leathanaigh éagsúla suíomh riaracháin a ghiniúint a shárú. Is féidir leat fiú cúpla ceann de na teimpléid seo a shárú le haghaidh aip ar leith, nó samhail ar leith.

### Set up your project's admin template directories

Tá na comhaid teimpléad riaracháin suite san eolaire: :source: django/contrib/admin/templates/admin.

D'fhonn ceann amháin nó níos mó díobh a shárú, cruthaigh eolaire ```admin ``ar dtús in eolaire ``teimpléad``` do thionscadail. Is féidir é seo a bheith ar aon cheann de na heolairí a shonraigh tú sa roghna:setting: DIRS \<TEMPLATES-DIRS\>\`den chúlcheann \`\`DjangoTemplates\` sa socrúit:setting: TEMPLATES. Má tá an rogha 'loaders'\` shaincheaptha agat, bí cinnte go bhfuil django.template.loaders.filesystem.loader'\` le feiceáil roimh django.template.loaders.app\_directories.loader' ionas go bhfaighidh an córas luchtaithe teimpléid do theimpléid saincheaptha roimh iad siúd atá san áireamh la:mod: django.contrier' b.riarachán.

Laistigh den eolaire admin seo, cruthaigh fo-eolairí ainmnithe i ndiaidh d'aip. Laistigh de na foeolairí aip seo cruthaigh fo-eolairí ainmnithe i ndiaidh Tabhair faoi deara, go ndéanfaidh an aip riaracháin ainm an tsamhail beaga agus tú ag lorg an eolaire, mar sin déan cinnte go n-ainmníonn tú an eolaire i ngach líon beag má tá tú chun d'aip a reáchtáil ar chóras comhaid cás-íogair.

Chun teimpléad riaracháin d'aip ar leith a shárú, cóipeáil agus cuir in eagar an teimpléad ón eolair:source: django/contrib/admin/templates/admin, agus sábháil é i gceann de na heolairí a chruthaigh tú díreach.

Mar shampla, dá mba mhaith linn uirlis a chur leis an amharc liosta athraithe do na samhlacha go léir in aip darb ainm `my_app`, chóipeáil `contrib/admin/templates/admin/change_list.html` chuig eolaire `templates/admin/my_app/` dár dtionscadal, agus déanfaimis aon athruithe riachtanacha.

Dá dteastaíonn uirlis a chur leis an amharc liosta athraithe amháin le haghaidh samhail shonrach darb ainm 'Page', déanfaimis an comhad céanna sin a chóipeáil chuig eolaire `templates/admin/my_app/page` dár dtionscadal.

### Teimpléad riaracháin a athsholáthar vs. athsholáthar

Mar gheall ar dhearadh modúlach na teimpléid riaracháin, de ghnáth ní gá ná moltar teimpléad iomlán a athsholáthar. Is fearr beagnach i gcónaí ach an chuid den teimpléad a chaithfidh tú a athrú a shárú.

Chun leanúint leis an sampla thuas, ba mhaith linn nasc nua a chur leis in aice leis an uirlis ```Stair ``don tsamhail ``Leathanach```. Tar éis féachaint ar `change_form.html` socraímid nach gá dúinn ach an bloc object-tools-items \`\`a shárú. Dá bhrí sin seo ár \`\`change\_form.html\` nua:

```html+django
{% extends "admin/change_form.html" %}
{% load i18n admin_urls %}
{% block object-tools-items %}
    <li>
        <a href="{% url opts|admin_urlname:'history' original.pk|admin_urlquote %}" class="historylink">{% translate "History" %}</a>
    </li>
    <li>
        <a href="mylink/" class="historylink">My Link</a>
    </li>
    {% if has_absolute_url %}
        <li>
            <a href="{% url 'admin:view_on_site' content_type_id original.pk %}" class="viewsitelink">{% translate "View on site" %}</a>
        </li>
    {% endif %}
{% endblock %}
```

Agus sin é! Dá gcuirfimid an comhad seo san eolaire `templates/admin/my_app`, bheadh ár nasc le feiceáil ar an bhfoirm athraithe do gach samhail laistigh de my\_app.

### Teimpléid a d'fhéadfaí a shárú in aghaidh an aip nó an tsamhail

Ní féidir gach teimpléad i contrib/admin/templates/admin a shárú in aghaidh an aip nó in aghaidh an tsamhail. Is féidir leis an méid seo a leanas:

- `Actions.html`
- `app_index.html`
- `athraithe_foirm.html`
- `change_form_actions.html`
- `athraithe_foirm_object_tools.html`
- `liosta_athraithe.html`
- `athraithe_liosta_object_tools.html`
- `athraí_liosta_results.html`
- `date_hierarchy.html`
- `delete_confirmation.html`
- `Object_Histor.html`
- `pagination.html`
- `popup_response.html`
- `réamh-phoilds_js.html`
- `foirme_cuardach.html`
- submit\_line.html \`\`

Maidir leis na teimpléid sin nach féidir iad a shárú ar an mbealach seo, féadfaidh tú iad a shárú do do thionscadal iomlán tríd an leagan nua a chur i d'eolaire teimpléad/admin . Tá sé seo úsáideach go háirithe chun leathanach saincheaptha 404 agus 500 a chruthú.

> **Note**
>
> Úsáidtear cuid de na teimpléid riaracháin, mar shampla `change_list_results.html` chun clibeanna cuimsithe saincheaptha a rinneadh. D'fhéadfaí iad seo a shárú, ach i gcásanna den sórt sin is dócha gur fearr duit do leagan féin den chlib atá i gceist a chruthú agus ainm difriúil a thabhairt dó. Ar an mbealach sin is féidir leat é a úsáid go roghnach.

### Teimpléid fréamh agus logála isteach

Más mian leat na teimpléid innéacs, logáil isteach nó logáil amach a athrú, is fearr duit do shampla `Adminsite` féin a chruthú (féach thíos), agus airíonna: attr: Adminsite.index\_Template, :attr: Adminsite.login\_Template nó: attr: Adminsite.logout\_Template a athrú.

## Tacaíocht téamaí

Úsáideann an riarachán athróga CSS chun dathanna agus clónna a shainiú. Ligeann sé seo téamaí a athrú gan go leor rialacha CSS aonair a shárú. Mar shampla, más fearr leat corcra in ionad gorm d'fhéadfá teimpléad admin/base.html a chur le do thionscadal:

```html+django
{% extends 'admin/base.html' %}

{% block extrastyle %}{{ block.super }}
<style>
html[data-theme="light"], :root {
  --primary: #9774d5;
  --secondary: #785cab;
  --link-fg: #7c449b;
  --link-selected-fg: #8f5bb2;
}
</style>
{% endblock %}
```

Sainmhínítear liosta na n-athróg CSS ag:source: django/contrib/admin/static/admin/css/base.css.

Sainmhínítear athróga mód dorcha, ag meas an cheist meán [prefers-color-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme), a:source: django/contrib/admin/static/admin/css/dark\_mode.css. Tá sé seo nasctha leis an doiciméad i {% block dark-mode-vars%} .

## `extrabody` block

You can add custom HTML, JavaScript, or other content to appear just before the
closing `</body>` tag of templates that extend `admin/base.html` by
extending the `extrabody` block. For example, if you want an alert to appear
on page load you could add a `admin/base.html` template override to your
project:

```html+django
{% extends 'admin/base.html' %}

{% block extrabody %}
    {{ block.super }}
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            window.alert('Welcome!');
        });
    </script>
{% endblock extrabody %}
```

## rudaí `Admin Site`

#### `class AdminSite(name='admin')`

Léirítear suíomh riaracháin Django le sampla de `django.contrib.admin.sites.adminSite`; de réir réamhshocraithe, cruthaítear sampla den rang seo mar `django.contrib.admin.site` agus is féidir leat do mhúnlaí agus cásanna ModelAdmin\` a chlárú leis.

\<overriding-default-admin-site\>Más mian leat an suíomh riaracháin réamhshocraithe a shaincheapadh, is féidir leat: ref: é a shárú .

Agus sampla de Adminsite' á thógáil agat, is féidir leat ainm sampla uathúil a sholáthar ag baint úsáide as an argóint ainm don tógálaí. \<admin-reverse-urls\>Úsáidtear an t-ainm sampla seo chun an cás a aithint, go háirithe nuair:ref: URLanna riaracháin a aisiompú \`. Mura gcuirtear aon ainm sampla ar fáil, úsáidfear ainm sampla réamhshocraithe de \`\`admin \`. Féach: ref: customizing-adminsite le haghaidh sampla den aicme: class: adminSite a shaincheapadh.

#### `django.contrib.admin.sites.all_sites`

A: Class: ~ WeakRef.WeakSet tá gach cás láithreáin riaracháin.

### `AdminSite` tréithe

Is féidir le teimpléid teimpléid riaracháin bonn a shárú nó a leathnú mar a thuairiscítear in:ref: admin-overriding-temples.

#### `AdminSite.site_header`

An téacs le cur ag barr gach leathanach riaracháin, mar `<div>` (teaghrán). De réir réamhshocraithe, is é seo “riarachán Django”.

#### `AdminSite.site_title`

An téacs le cur ag deireadh gach leathanach riaracháin \<title\>\`\`\`(teaghrán). De réir réamhshocraithe, is é seo “Riarachán láithreáin Django”.

#### `AdminSite.site_url`

An URL don nasc “Féach ar an suíomh” ag barr gach leathanach riaracháin. De réir réamhshocraithe, is é ``` site_url `` ```/. Socraigh é go None chun an nasc a bhaint.

Maidir le suíomhanna atá ag rith ar fho-chosán, seiceálann an modh:meth: each\_context an bhfuil request.meta \['SCRIPT\_NAME'\] \`\`socraithe sa iarraidh reatha agus úsáideann sé an luach sin mura bhfuil \`\`site\_url\` socraithe ar rud éigin seachas `/`.

#### `AdminSite.index_title`

An téacs le cur ag barr an leathanaigh innéacs riaracháin (sreang). De réir réamhshocraithe, is é seo “Riarachán láithreáin”.

#### `AdminSite.index_template`

Conair chuig teimpléad saincheaptha a úsáidfidh príomh-amharc innéacs an láithreáin riaracháin.

#### `AdminSite.app_index_template`

Conair chuig teimpléad saincheaptha a úsáidfidh amharc innéacs aip an láithreáin riaracháin.

#### `AdminSite.empty_value_display`

An teaghrán le húsáid chun luachanna folmha a thaispeáint i liosta athraithe an láithreáin riaracháin. Réamhshocraithe go sraitheanna. Is féidir an luach a shárú freisin ar bhonn `ModelAdmin` agus ar réimse saincheaptha laistigh de `ModelAdmin` trí thréith `empty_value_display` a shocrú ar an réimse. Féach: attr: ModelAdmin.empty\_value\_display le haghaidh samplaí.

#### `AdminSite.enable_nav_sidebar`

Luach boolean a chinneann an dtaispeánfar an barra taobh nascleanúna ar scáileáin níos mó. De réir réamhshocraithe, tá sé socraithe go `True`.

#### `AdminSite.final_catch_all_view`

Luach boolean a chinneann an gcuirfear dearcadh deiridh catch-all a chur leis an riarachán a atreoraíonn úsáideoirí neamhfhíordheimhnithe chuig an leathanach logála isteach. De réir réamhshocraithe, tá sé socraithe go `True`.

> **Warning**
>
> Ní mholtar é seo a shocrú go False toisc go gcosnaíonn an dearcadh i gcoinne saincheist phríobháideachta féideartha líonta samhail.

#### `AdminSite.login_template`

Conair chuig teimpléad saincheaptha a úsáidfidh amharc logála isteach an láithreáin riaracháin.

#### `AdminSite.login_form`

Fo-aicme de:class: ~django.contrib.auth.forms.AuthenticationForm a úsáidfidh amharc logála isteach an láithreáin riaracháin.

#### `AdminSite.logout_template`

Conair chuig teimpléad saincheaptha a úsáidfidh amharc logáil amach an láithreáin riaracháin.

#### `AdminSite.password_change_form`

> **New in Django 6.0**

Subclass of [`PasswordChangeForm`](/ga/6.1/topics/auth/default/#django.contrib.auth.forms.PasswordChangeForm) that
will be used by the admin site password change view.

#### `AdminSite.password_change_template`

Conair chuig teimpléad saincheaptha a úsáidfidh amharc athraithe pasfhocal an láithreáin riaracháin.

#### `AdminSite.password_change_done_template`

Conair chuig teimpléad saincheaptha a úsáidfidh athrú pasfhocal an láithreáin riaracháin amharc déanta.

### Modhanna `Adminsite`

#### `AdminSite.each_context(request)`

Tugann foclóir athróg ar ais le cur i gcomhthéacs an teimpléid do gach leathanach ar an suíomh riaracháin.

Cuimsíonn sé na hathróga agus na luachanna seo a leanas de réir

- `site_header`: :attr: Adminsite.site\_header
- `site_title`: :attr: Adminsite.site\_title
- `site_url`: :attr: Adminsite.site\_url
- `has_ceadúna`: :meth: adminsite.has\_ceadúna
- `available_apps`: liosta d'iarratais óna:doc: clárú iarrataich atá ar fáil don úsáideoir reatha \</ref/applications/\>. Is é gach iontráil sa liosta ina dhiaidh sin a léiríonn feidhmchlár leis na heochracha seo a leanas:

  - `app_label`: an lipéad iarratais
  - app\_url : URL an innéacs iarratais sa riarachán
  - `has_module_perms`: boolean a léiríonn an bhfuil leathanach innéacs an mhodúil ceadaithe don úsáideoir reatha a thaispeáint agus rochtain a fháil ar leathanach innéacs an mhodúil
  - samhlacha : liosta de na samhlacha atá ar fáil san iarratas

  Is dict é gach samhail leis na heochracha seo a leanas:

  - samhail : an rang samhail
  - `object_name`: ainm aicme an tsamhail
  - ainm : ainm iolra an tsamhail
  - `perms`: rianú `dict` ceadanna \`\`add\`, athraithe\`, scrios\`, agus `féach`
  - `admin_url`: URL liosta athraithe riaracháin don tsamhail
  - `add_url`: URL riaracháin chun samhail nua a chur leis
- `is_popup`: cibé an bhfuil an leathanach reatha ar taispeáint i bhfuinneog aníos
- `is_nav_sidebar_enabled`: :attr: Adminsite.enable\_nav\_sidebar
- `log_entries`: :meth: .adminsite.get\_log\_entries

#### `AdminSite.get_app_list(request, app_label=None)`

Tugann liosta iarratais ar ais ó:doc: clár iarrataich atá ar fáil don úsáideoir \</ref/applications/\> reatha. Is féidir leat argóint `app_label` a rith go roghnach chun sonraí a fháil d'aip amháin. Is foclóir é gach iontráil sa liosta a léiríonn feidhmchlár leis na heochracha seo a leanas:

- `app_label`: an lipéad iarratais
- app\_url : URL an innéacs iarratais sa riarachán
- `has_module_perms`: boolean a léiríonn an bhfuil leathanach innéacs an mhodúil ceadaithe don úsáideoir reatha a thaispeáint agus rochtain a fháil ar leathanach innéacs an mhodúil
- samhlacha : liosta de na samhlacha atá ar fáil san iarratas
- ainm : ainm an iarratais

Is foclóir é gach samhail leis na heochracha seo a leanas:

- samhail : an rang samhail
- `object_name`: ainm aicme an tsamhail
- ainm : ainm iolra an tsamhail
- `perms`: rianú `dict` ceadanna \`\`add\`, athraithe\`, scrios\`, agus `féach`
- `admin_url`: URL liosta athraithe riaracháin don tsamhail
- `add_url`: URL riaracháin chun samhail nua a chur leis

Déantar liostaí iarratais agus samhlacha a shórtáil in ord aibítre de réir a n-ainmneacha. Is féidir leat an modh seo a athrú chun an t-ordú réamhshocraithe a athrú ar an leathanach innéacs riaracháin.

#### `AdminSite.has_permission(request)`

Tugann `True` ar ais má tá cead ag an úsáideoir don HttpRequest\` a thugtar leathanach amháin ar a laghad a fheiceáil ar an suíomh riaracháin. \<django.contrib.auth.models.User.is\_active\>\<django.contrib.auth.models.User.is\_staff\>Réamhshocraithe chun a cheangal go mbeadh an bheirt: attr: User.is\_Active \`agus: attr: \`User.is\_staff a bheith `True`.

#### `AdminSite.register(model_or_iterable, admin_class=None, **options)`

Cláraíonn sé an rang samhail tugtha (nó athraitheach ranganna) leis an admin\_class\` a thugtar. Réamhshocraithe `admin_class` to:class: ~django.contrib.admin.modelAdmin (na roghanna riaracháin réamhshocraithe). Má thugtar argóintí eochairfhocal - m.sh. `list_display` -- cuirfear i bhfeidhm iad mar roghanna ar an rang riaracháin.

Raises [`ImproperlyConfigured`](/ga/6.1/ref/exceptions/#django.core.exceptions.ImproperlyConfigured) if a model is
abstract, and `django.contrib.admin.exceptions.AlreadyRegistered` if a
model is already registered.

#### `AdminSite.unregister(model_or_iterable)`

Díchláraigh an rang samhail a thugtar (nó athraitheach ranganna).

Ardaíonn sé `django.contrib.admin.exceptions.notRegistered` mura bhfuil samhail cláraithe cheana féin.

#### `AdminSite.get_model_admin(model)`

Tugann sé rang riaracháin ar ais don rang samhail ar leith. Ardaíonn sé `django.contrib.admin.exceptions.notRegistered` mura bhfuil samhail cláraithe.

#### `AdminSite.get_log_entries(request)`

Tugann sé tacar fiosrúcháin ar fáil do na cásanna gaolmha:class: ~django.contrib.admin.models.logEntry, a thaispeántar ar leathanach innéacs an láithreáin. Is féidir an modh seo a shárú chun na hiontrálacha logála a scagadh de réir critéir eile.

### Cásanna `AdminSite` a chur isteach i do URLConf

The last step in setting up the Django admin is to hook your `AdminSite`
instance into your URLconf. Do this by pointing a given URL at the
`AdminSite.urls` method. It is not necessary to use
[`include()`](/ga/6.1/ref/urls/#django.urls.include).

Sa sampla seo, cláraímid an sampla réamhshocraithe `adminSite` `django.contrib.admin.site` ag an URL `/admin/`:

```
# urls.py
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path("admin/", admin.site.urls),
]
```

### Saincheapadh an ranga:class: adminSite

Más mian leat do shuíomh riaracháin féin a bhunú le hiompar saincheaptha, tá saor ort fo-aicme ```Adminsite' agus aon rud is mian leat a shárú nó a chur leis. Ansin, cruthaigh sampla de do fho-aicme ``AdminSite``` (ar an mbealach céanna a chuirfeá aon rang Python eile) agus cláraigh do mhúnlaí agus fo-aicmí `ModelAdmin` leis in ionad leis an suíomh réamhshocraithe. Faoi dheireadh, nuashonraigh: file: myproject/urls.py chun tagairt a dhéanamh d'fho-aicme: class: adminSite.

*`myapp/admin.py`*

```python
from django.contrib import admin

from .models import MyModel

class MyAdminSite(admin.AdminSite):
    site_header = "Monty Python administration"

admin_site = MyAdminSite(name="myadmin")
admin_site.register(MyModel)
```

*`myproject/urls.py`*

```python
from django.urls import path

from myapp.admin import admin_site

urlpatterns = [
    path("myadmin/", admin_site.urls),
]
```

Tabhair faoi deara go mb'fhéidir nach dteastaíonn uait modúil admin \`\`uathoibríoch agus tú ag úsáid do shampla \`\`adminSite féin ós rud é gur dócha go mbeidh tú ag iompórtáil na modúil `admin` gach aip in aghaidh an aip i do mhodúl ````myproject.admin ``. Ciallaíonn sé seo go gcaithfidh tú ``django.contrib.admin.apps.simpleAdminConfig'` a chur in ionad ```django.contrib.admin'```` i do shuíomh: INSTALLED\_APPS.

### Sárú ar an suíomh riaracháin réamhshocraithe

Is féidir leat an réamhshocraithe `django.contrib.admin.site` a shárú trí:attr: ~.simpleAdminConfig.default\_site tréith saincheaptha `AppConfig` a shocrú chuig an gcosán allmhairithe poncair de fho-aicme `AdminSite` nó inghlaoch a thugann sampla láithreáin.

*`myproject/admin.py`*

```python
from django.contrib import admin

class MyAdminSite(admin.AdminSite): ...
```

*`myproject/apps.py`*

```python
from django.contrib.admin.apps import AdminConfig

class MyAdminConfig(AdminConfig):
    default_site = "myproject.admin.MyAdminSite"
```

*`myproject/settings.py`*

```python
INSTALLED_APPS = [
    # ...
    "myproject.apps.MyAdminConfig",  # replaces 'django.contrib.admin'
    # ...
]
```

### Láithreáin riaracháin iolracha sa URLConf céanna

Is féidir leat cásanna iolracha den suíomh riaracháin a chruthú ar an suíomh Gréasáin céanna faoi thiomáint Django. Cruthaigh cásanna iolracha de `Adminsite` agus cuir gach ceann acu ag URL difriúil.

Sa sampla seo, cuimsíonn na URLanna `/basic-admin/` agus `/advanced-admin/` leaganacha ar leithligh den suíomh riaracháin -- ag baint úsáide as na cásanna `adminSite` `myproject.admin.basic_site` agus myproject.admin.advanced\_\`site\`, faoi seach:

```
# urls.py
from django.urls import path
from myproject.admin import advanced_site, basic_site

urlpatterns = [
    path("basic-admin/", basic_site.urls),
    path("advanced-admin/", advanced_site.urls),
]
```

Tógann cásanna Adminsite argóint amháin dá dtógálaí, a n-ainm, ar féidir a bheith ina rud ar bith is mian leat. \<admin-reverse-urls\>Is é an argóint seo an réimír d'ainmneacha URL chun críocha:ref: iad a aisiompú \`. Níl sé seo riachtanach ach má tá níos mó ná \`Adminsite amháin á úsáid agat.

### Tuairimí a chur le suíomhanna riaracháin

Just like [`ModelAdmin`](#django.contrib.admin.ModelAdmin), [`AdminSite`](#django.contrib.admin.AdminSite) provides a
[`get_urls()`](#django.contrib.admin.ModelAdmin.get_urls) method
that can be overridden to define additional views for the site. To add
a new view to your admin site, extend the base
[`get_urls()`](#django.contrib.admin.ModelAdmin.get_urls) method to include
a pattern for your new view.

> **Note**
>
> Ba chóir d'aon radharc a rindreann tú a úsáideann na teimpléid riaracháin, nó a leathnaíonn an teimpléad riaracháin bonn, request.current\_app \`\`a shocrú sula ndéantar an teimpléad a rindreáil. Ba chóir é a shocrú go \`\`self.name\` má tá do thuairim ar `Adminsite` nó `self.admin_site.name` má tá do thuairim ar `ModelAdmin`.

### Gné athshocraithe pasfhocal a chur leis

Is féidir leat gné athshocraithe pasfhocal a chur leis an suíomh riaracháin trí chúpla líne a chur le do URLConf. Go sonrach, cuir na ceithre phatrún seo leis:

```
from django.contrib import admin
from django.contrib.auth import views as auth_views

path(
    "admin/password_reset/",
    auth_views.PasswordResetView.as_view(
        extra_context={"site_header": admin.site.site_header}
    ),
    name="admin_password_reset",
),
path(
    "admin/password_reset/done/",
    auth_views.PasswordResetDoneView.as_view(
        extra_context={"site_header": admin.site.site_header}
    ),
    name="password_reset_done",
),
path(
    "reset/<uidb64>/<token>/",
    auth_views.PasswordResetConfirmView.as_view(
        extra_context={"site_header": admin.site.site_header}
    ),
    name="password_reset_confirm",
),
path(
    "reset/done/",
    auth_views.PasswordResetCompleteView.as_view(
        extra_context={"site_header": admin.site.site_header}
    ),
    name="password_reset_complete",
),
```

(Glacann sé seo leis gur chuir tú an riarachán leis ag admin/\` agus éilíonn tú go gcuirfidh tú na URLanna ag tosú le `^admin/` roimh an líne a chuimsíonn an aip riaracháin féin).

Beidh an URL ainmnithe `admin_password_reset` mar thoradh ar “dearmad ar do phasfhocal?” nasc le feiceáil ar an leathanach logála isteach riaracháin réamhshocraithe faoin mbosca pasfhocal.

## Rudaí `Logentry`

#### `class models.LogEntry`

Rianaíonn an rang LogEntry breiseanna, athruithe agus scriosadh rudaí a dhéantar tríd an gcomhéadan riaracháin.

### `Logentry` tréithe

#### `LogEntry.action_time`

Dáta agus am an ghníomhaíochta.

#### `LogEntry.user`

An t-úsáideoir (an:setting: AUTH\_USER\_MODEL) a rinne an gníomh.

#### `LogEntry.content_type`

An: Class: ~django.contrib.contentTypes.Models.ContentType an réad modhnaithe.

#### `LogEntry.object_id`

Léiriú téacsúil phríomh-eochair an réad modhnaithe.

#### `LogEntry.object_repr`

An réad repr () tar éis na modhnaithe.

#### `LogEntry.action_flag`

An cineál gníomhaíochta logáilte: `BREISE`, ATHRAÍ\`, SCRIOSADH \`.

Mar shampla, chun liosta de na breiseanna go léir a dhéantar tríd an riarachán a fháil:

```
from django.contrib.admin.models import ADDITION, LogEntry

LogEntry.objects.filter(action_flag=ADDITION)
```

#### `LogEntry.change_message`

An cur síos mionsonraithe ar an modhnú. I gcás eagarthóireachta, mar shampla, tá liosta de na réimsí eagarthóireachta sa teachtaireacht. Formálaíonn suíomh riaracháin Django an t-ábhar seo mar struchtúr JSON, ionas gur féidir le: meth: get\_change\_message teachtaireacht a aistrítear sa teanga úsáideora reatha a athchóiriú. D'fhéadfadh cód saincheaptha é seo a shocrú mar shreang simplí áfach. Moltar duit an modh: meth: get\_change\_message a úsáid chun an luach seo a aisghabháil in ionad rochtain a fháil go díreach air.

### Modhanna `Logentry`

#### `LogEntry.get_edited_object()`

Aicearra a thugann an réad tagartha ar ais.

#### `LogEntry.get_change_message()`

Formáidí agus aistriúcháin:attr: change\_message isteach sa teanga úsáideora reatha. Taispeánfar teachtaireachtaí a cruthaíodh roimh Django 1.10 i gcónaí sa teanga ina raibh siad logáilte.

## URLanna riaracháin a aisiompú

\<naming-url-patterns\>Nuair a imscartar an:class: AdminSite, is féidir na tuairimí a sholáthraíonn an láithreán sin inrochtana ag baint úsáide as django's:ref: córas aisiompthe URL.

Soláthraíonn an:class: adminSite na patrúin URL ainmnithe seo a leanas:

| Leathanach | Ainm URL | Paraiméadair |
| --- | --- | --- |
| Innéacs | `Innéacs` |  |
| Logáil isteach | Logáil isteach \`\` |  |
| Logáil amach | logáil isteach \`\` |  |
| Athrú focal faire | `athraithe_pasfhocal` |  |
| Athrú pasfhocal déanta | `pasfhocal_athraithe_déanaith` |  |
| i18n JavaScript | `jsi18n` |  |
| Leathanach innéacs iarratais | `liosta_aipe` | `app_label` |
| Atreorú chuig leathanach an réada | `amharc_ar an láithreán` | `` `id_cineál_ábha ``, id\_réad\` |

Soláthraíonn gach cás: Class: ModelAdmin sraith breise URLanna ainmnithe:

| Leathanach | Ainm URL | Paraiméadair |
| --- | --- | --- |
| Liosta athraithe | `{{app_label}} _ {{ainm mhúnla}} _changelist` |  |
| Cuir le | `{{app_label}} _ {{nomnamh samhail}} _cuir leis` |  |
| Stair | `{{app_label}} _ {{ainm samhail}} _stair` | `id_réad` |
| Cealaigh | `{{app_label}} _ {{nomnamh samhail}} _scrios` | `id_réad` |
| Athraigh | `{{app_label}} _ {{nomnamh samhail}} _athraithe` | `id_réad` |

Soláthraíonn an `UserAdmin` URL ainmnithe:

| Leathanach | Ainm URL | Paraiméadair |
| --- | --- | --- |
| Athrú focal faire | `Auth_úsáideor_athraithe_pasfhocal_athraithe` | ID úsáideora \`\` |

Tá na URLanna ainmnithe seo cláraithe leis an spás ainmneacha feidhmchláir admin , agus le spás ainmneacha sampla a fhreagraíonn d'ainm an tSuímh.

Mar sin - dá dteastaíonn uait tagairt a fháil don radharc Athraigh do réad áirithe `Roghna` (ón bhfeidhmchlár poballaí) sa riarachán réamhshocraithe, ghlaoifeá ar:

```pycon
>>> from django.urls import reverse
>>> c = Choice.objects.get(...)
>>> change_url = reverse("admin:polls_choice_change", args=(c.id,))
```

Gheobhaidh sé seo an chéad shampla cláraithe den fheidhmchlár riaracháin (cibé ainm an sampla), agus réiteoidh sé an dearcadh maidir le cásanna `Poll.Choice` a athrú sa chás sin.

Más mian leat URL a aimsiú i gcás riaracháin ar leith, tabhair ainm an chás sin mar leid `current_app` don ghlao droim. Mar shampla, dá dteastaíonn uait go sonrach an dearcadh riaracháin ón gcás riaracháin darb ainm sain\`, bheadh ort glaoch ar:

```pycon
>>> change_url = reverse("admin:polls_choice_change", args=(c.id,), current_app="custom")
```

\<topics-http-reversing-url-namespaces\>Le haghaidh tuilleadh sonraí, féach an doiciméadú ar:ref: URLanna spaced ainmneacha a aisiompú .

Chun na urls riaracháin a aisiompú níos éasca i dteimpléid, soláthraíonn Django scagaire `admin_urlname` a ghlacann gníomh mar argóint:

```html+django
{% load admin_urls %}
<a href="{% url opts|admin_urlname:'add' %}">Add user</a>
<a href="{% url opts|admin_urlname:'delete' user.pk %}">Delete this user</a>
```

Meaitníonn an gníomh sna samplaí thuas leis an gcuid deireanach de na hainmneacha URL le haghaidh cásanna: class: ModelAdmin a thuairiscítear thuas. Is féidir leis an athróg `opts` a bheith ina rud ar bith a bhfuil tréithe `app_label` agus `model_name` aige agus is gnách go soláthraíonn na tuairimí riaracháin don tsamhail reatha.

## An maisitheoir `taispeán`

#### `display(* (Keyword-only parameters separator (PEP 3102)), boolean=None, ordering=None, description=None, empty_value=None)`

Is féidir an maisitheoir seo a úsáid chun tréithe sonracha a shocrú ar fheidhmeanna taispeána saincheaptha is féidir a úsáid le:attr: ~django.contrib.admin.modeladmin.list\_display nó:attr: ~django.contrib.admin.modelAdmin.ReadOnly\_Fields:

```
@admin.display(
    boolean=True,
    ordering="-publish_date",
    description="Is Published?",
)
def is_published(self, obj):
    return obj.publish_date is not None
```

Tá sé seo comhionann le roinnt tréithe (leis na hainmneacha bunaidh, níos faide) a shocrú go díreach ar an bhfeidhm:

```
def is_published(self, obj):
    return obj.publish_date is not None

is_published.boolean = True
is_published.admin_order_field = "-publish_date"
is_published.short_description = "Is Published?"
```

Tabhair faoi deara freisin go léarscálann paraiméadar maisitheora `empty_value` leis an tréith empty\_value\_display\` a shanntar go díreach don fheidhm. Ní féidir é a úsáid i gcomhar le `boolean` \- tá siad frithpháirteach.

Níl sé éigeantach an maisitheoir seo a úsáid chun feidhm taispeána a dhéanamh, ach d'fhéadfadh sé a bheith úsáideach é a úsáid gan argóintí mar mharcóir i do fhoinse chun cuspóir na feidhme a aithint:

```
@admin.display
def published_year(self, obj):
    return obj.publish_date.year
```

Sa chás seo ní chuirfidh sé aon tréithe leis an bhfeidhm.

## An maisitheoir `staff_member_requred`

#### `staff_member_required(redirect_field_name='next', login_url='admin:login')`

Úsáidtear an maisitheoir seo ar na tuairimí riaracháin a éilíonn údarú. Beidh an t-iompar seo a leanas ag radharc maisithe leis an bhfeidhm seo:

- Má tá an t-úsáideoir logáilte isteach, gur ball foirne é (`user.is_staff=true`), agus má tá sé gníomhach (`user.is_active=true`), déan an radharc a fhorghníomhú de ghnáth.
- Seachas sin, atreorófar an t-iarratas chuig an URL a shonraítear leis an bparaiméadar ```login_url ``, leis an gcosán a iarrtar ar dtús in athróg teaghrán fiosrúcháin a shonraítear le ``redirect_field_name```. Mar shampla: `/admin/login/? next =/admin /polls/ceist/3/`.

Úsáid sampla:

```
from django.contrib.admin.views.decorators import staff_member_required

@staff_member_required
def my_view(request): ...
```
