{"title":"gníomhartha riaracháin","version":"5.2","locale":"ga","docname":"ref/contrib/admin/actions","url":"/ga/5.2/ref/contrib/admin/actions/","canonical":"https://djangodocs.dev/ga/5.2/ref/contrib/admin/actions/","summary":"Is é sreabhadh oibre bunúsach riaracháin Django, go hachomair, “roghnaigh réad, ansin athraigh é.” Oibríonn sé seo go maith le haghaidh formhór na gcásanna úsáide.…","html":"<h1>gníomhartha riaracháin<a class=\"heading-anchor\" href=\"#admin-actions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Is é sreabhadh oibre bunúsach riaracháin Django, go hachomair, “roghnaigh réad, ansin athraigh é.” Oibríonn sé seo go maith le haghaidh formhór na gcásanna úsáide. Mar sin féin, más gá duit an t-athrú céanna a dhéanamh ar go leor rudaí ag an am céanna, is féidir leis an sreabhadh oibre seo a bheith an-teannach.</p>\n<p>Sna cásanna seo, ligeann riarachán Django duit “gníomhartha” a scríobh agus a chlárú - feidhmeanna a ghlaofar le liosta rudaí a roghnaítear ar leathanach an liosta athraithe.</p>\n<p>Má fhéachann tú ar aon liosta athraithe sa riarachán, feicfidh tú an ghné seo i ngníomh; Seolann Django le gníomh “scrios rudaí roghnaithe” atá ar fáil do gach samhail. Mar shampla, seo an modúl úsáideora ó aip ionsuite Django: mod: django.contrib.auth:</p>\n<img alt=\"/ga/5.2/_images/admin-actions.png\" src=\"/ga/5.2/_images/admin-actions.png\" />\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Warning</p>\n<p>Úsáideann &lt;django.db.models.query.QuerySet.delete&gt;an gníomh “scrios rudaí roghnaithe”: meth: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>QuerySet.delete () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>ar chúiseanna éifeachtúlachta, a bhfuil rabhadh tábhachtach aige: ní ghlaofar modh <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>delete () <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>do mhúnla.</p>\n<p>Más mian leat an t-iompar seo a shárú, is féidir leat: meth: .modelAdmin.delete_querySet a shárú nó gníomh saincheaptha a scríobh a scriosann ar an mbealach is fearr leat - mar shampla, trí ghlaoch ar <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Model.delete () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>do gach ceann de na míreanna roghnaithe.</p>\n<p>&lt;topics-db-queries-delete&gt;Le haghaidh tuilleadh cúlra maidir le mór-scriosadh, féach an doiciméadú ar:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>scriosadh réad <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n</aside>\n<p>Léigh ar aghaidh chun a fháil amach conas do ghníomhartha féin a chur leis an liosta seo.</p>\n<section id=\"writing-actions\">\n<h2>Gníomhartha scrí<a class=\"heading-anchor\" href=\"#writing-actions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Is é an bealach is éasca le gníomhartha a mhíniú trí shampla, mar sin déanaimis tumadh isteach.</p>\n<p>Cás úsáide coitianta do ghníomhartha riaracháin is ea an mórchnuashonrú ar mhúnla. Samhlaigh feidhmchlár nuachta le samhail <code class=\"docutils literal notranslate\"><span class=\"pre\">Airteagal</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n<span class=\"n\">STATUS_CHOICES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;d&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Draft&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;p&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Published&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;w&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Withdrawn&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Article</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">title</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n    <span class=\"n\">body</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">TextField</span><span class=\"p\">()</span>\n    <span class=\"n\">status</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"n\">choices</span><span class=\"o\">=</span><span class=\"n\">STATUS_CHOICES</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__str__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">title</span>\n</code></pre></div>\n<p>Tasc coitianta a d'fhéadfaimis a dhéanamh le samhail mar seo ná stádas alt a nuashonrú ó “dréacht” go “foilsithe”. D'fhéadfaimis é seo a dhéanamh go héasca san riarachán alt amháin ag an am, ach dá dteastaíonn uainn grúpa alt a fhoilsiú go mór, bheadh sé deacair. Mar sin, déanaimis gníomh a scríobh a ligeann dúinn stádas alt a athrú go “foilsithe.”</p>\n<section id=\"writing-action-functions\">\n<h3>Feidhmeanna gníomhaíochta<a class=\"heading-anchor\" href=\"#writing-action-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ar dtús, beidh orainn feidhm a scríobh a ghlaofar nuair a spreagtar an gníomh ón riarachán. Is feidhmeanna rialta iad feidhmeanna gníomhaíochta a thógann trí argóint:</p>\n<ul class=\"simple\">\n<li><p>An reatha: aicme: ModelAdmin</p></li>\n<li><p>An:class: ~django.http.httpRequest a léiríonn an t-iarratas reatha,</p></li>\n<li><p>A: Class: ~django.db.models.query.querySet ina bhfuil an tacar rudaí a roghnaigh an t-úsáideoir.</p></li>\n</ul>\n<p>Ní bheidh an: class: ModelAdmin nó an réad iarratais ag teastáil ó ár bhfeidhm foilsithe seo, ach úsáidfimid an tacar ceisteanna:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">make_published</span><span class=\"p\">(</span><span class=\"n\">modeladmin</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n    <span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">status</span><span class=\"o\">=</span><span class=\"s2\">&quot;p&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>&lt;topics-db-queries-update&gt;Le haghaidh an fheidhmíocht is fearr, táimid ag úsáid an Queryset 's:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>modh nuashonraithe <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>. B'fhéidir go mbeadh gá le cineálacha eile gníomhartha déileáil le gach réad ina n-aonar; sna cásanna seo déanfaimis athrá thar an tacar ceisteanna:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">for</span> <span class=\"n\">obj</span> <span class=\"ow\">in</span> <span class=\"n\">queryset</span><span class=\"p\">:</span>\n    <span class=\"n\">do_something_with</span><span class=\"p\">(</span><span class=\"n\">obj</span><span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n<p>Sin i ndáiríre gach rud atá ann chun gníomh a scríobh! Mar sin féin, glacfaimid céim roghnach ach úsáideach amháin eile agus tabharfaimid teideal “deas” don ghníomh sa riarachán. De réir réamhshocraithe, bheadh an gníomh seo le feiceáil ar an liosta gníomhaíochta mar “Déan foilsithe” - ainm na feidhme, le spásanna ina ionad béim. Tá sé sin go breá, ach is féidir linn ainm níos fearr, níos cairdiúla don duine a sholáthar tríd an maisitheoir: func: ~django.contrib.admin.action a úsáid ar an bhfeidhm <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>make_published <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n<span class=\"o\">...</span>\n\n\n<span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">action</span><span class=\"p\">(</span><span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Mark selected stories as published&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">make_published</span><span class=\"p\">(</span><span class=\"n\">modeladmin</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n    <span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">status</span><span class=\"o\">=</span><span class=\"s2\">&quot;p&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>D'fhéadfadh cuma eolach air seo; úsáideann an rogha admin's:attr: ~django.contrib.admin.modeladmin.list_display teicníc den chineál céanna leis an maisitheoir: func: ~django.contrib.admin.display chun tuairiscí inléite don duine a sholáthar d'fheidhmeanna aisghlaonna atá cláraithe ansin freisin.</p>\n</aside>\n</section>\n<section id=\"adding-actions-to-the-modeladmin\">\n<h3>Gníomhartha a chur leis an:class: ModelAdmin<a class=\"heading-anchor\" href=\"#adding-actions-to-the-modeladmin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ansin, beidh orainn ár n:class: ModelAdmin a chur ar an eolas faoin ngníomh. Oibríonn sé seo díreach cosúil le haon rogha cumraíochta eile. Mar sin, bheadh cuma ar an admin.py` iomlán leis an ngníomh agus a chlárú:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Article</span>\n\n\n<span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">action</span><span class=\"p\">(</span><span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Mark selected stories as published&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">make_published</span><span class=\"p\">(</span><span class=\"n\">modeladmin</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n    <span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">status</span><span class=\"o\">=</span><span class=\"s2\">&quot;p&quot;</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;status&quot;</span><span class=\"p\">]</span>\n    <span class=\"n\">ordering</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">]</span>\n    <span class=\"n\">actions</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">make_published</span><span class=\"p\">]</span>\n\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Article</span><span class=\"p\">,</span> <span class=\"n\">ArticleAdmin</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Tabharfaidh an cód sin liosta athraithe riaracháin dúinn a bhfuil cuma mar seo air:</p>\n<img alt=\"/ga/5.2/_images/adding-actions-to-the-modeladmin.png\" src=\"/ga/5.2/_images/adding-actions-to-the-modeladmin.png\" />\n<p>Sin go léir atá ann i ndáiríre! Má tá tú ag iarraidh do ghníomhartha féin a scríobh, tá a fhios agat anois go leor chun tosú. Clúdaíonn an chuid eile den doiciméad seo teicnící níos airde.</p>\n</section>\n<section id=\"handling-errors-in-actions\">\n<h3>Earráidí láimhseála i ngn<a class=\"heading-anchor\" href=\"#handling-errors-in-actions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Má tá coinníollacha earráide intuartha ann a d'fhéadfadh tarlú agus do ghníomh á reáchtáil, ba cheart duit an t-úsáideoir a chur ar an eolas go grásta faoin bhfadhb. Ciallaíonn sé seo eisceachtaí a láimhseáil agus úsáid: meth: django.contrib.admin.modeladmin.message_user chun cur síos atá cairdiúil don úsáideoir ar an bhfadhb sa fhreagra a thaispeáint.</p>\n</section>\n</section>\n<section id=\"advanced-action-techniques\">\n<h2>Teicnící gníomhaíochta chun<a class=\"heading-anchor\" href=\"#advanced-action-techniques\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tá cúpla rogha agus féidearthachtaí breise ann is féidir leat leas a bhaint as le haghaidh roghanna níos airde.</p>\n<section id=\"actions-as-modeladmin-methods\">\n<h3>Gníomhartha cosúil:class: ModelAdmin modhanna<a class=\"heading-anchor\" href=\"#actions-as-modeladmin-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Taispeánann an sampla thuas an gníomh <code class=\"docutils literal notranslate\"><span class=\"pre\">make_published</span></code> a shainmhínítear mar fheidhm. Tá sé sin go breá, ach níl sé foirfe ó thaobh dearaidh cód: ós rud é go bhfuil an gníomh ceangailte go docht leis an réad <code class=\"docutils literal notranslate\"><span class=\"pre\">Airteagal</span></code>, tá sé ciallmhar an gníomh a cheangal leis an réad <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>ArticleAdMin` féin.</p>\n<p>Is féidir leat é a dhéanamh mar seo:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n\n    <span class=\"n\">actions</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;make_published&quot;</span><span class=\"p\">]</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">action</span><span class=\"p\">(</span><span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Mark selected stories as published&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">make_published</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n        <span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">status</span><span class=\"o\">=</span><span class=\"s2\">&quot;p&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Tabhair faoi deara ar dtús gur bhogamar <code class=\"docutils literal notranslate\"><span class=\"pre\">make_published</span></code> isteach i modh agus athainmníomar an paraiméadar <code class=\"docutils literal notranslate\"><span class=\"pre\">modeladmin</span> <span class=\"pre\">``go</span> <span class=\"pre\">`self</span></code>, agus sa dara háit gur chuireamar an teaghrán <code class=\"docutils literal notranslate\"><span class=\"pre\">`make_published'`</span> <span class=\"pre\">anois</span> <span class=\"pre\">i</span> <span class=\"pre\">``actions</span></code> in ionad tagairt feidhme díreach. Insíonn sé seo la:class: ModelAdmin breathnú suas ar an ngníomh mar mhodh.</p>\n<p>Tugann gníomhartha a shainmhíniú mar mhodhanna rochtain níos idiomatiúla don ghníomhaíocht ar an: class: ModelAdmin féin, rud a ligeann don ghníomh aon cheann de na modhanna a sholáthraíonn an riarachán a ghlaoch.</p>\n<p id=\"custom-admin-action\">Mar shampla, is féidir linn <code class=\"docutils literal notranslate\"><span class=\"pre\">féin</span></code> a úsáid chun teachtaireacht a splancadh chuig an úsáideoir in iúl dóibh gur éirigh leis an ngníomh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">messages</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.translation</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ngettext</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">make_published</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n        <span class=\"n\">updated</span> <span class=\"o\">=</span> <span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">status</span><span class=\"o\">=</span><span class=\"s2\">&quot;p&quot;</span><span class=\"p\">)</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">message_user</span><span class=\"p\">(</span>\n            <span class=\"n\">request</span><span class=\"p\">,</span>\n            <span class=\"n\">ngettext</span><span class=\"p\">(</span>\n                <span class=\"s2\">&quot;</span><span class=\"si\">%d</span><span class=\"s2\"> story was successfully marked as published.&quot;</span><span class=\"p\">,</span>\n                <span class=\"s2\">&quot;</span><span class=\"si\">%d</span><span class=\"s2\"> stories were successfully marked as published.&quot;</span><span class=\"p\">,</span>\n                <span class=\"n\">updated</span><span class=\"p\">,</span>\n            <span class=\"p\">)</span>\n            <span class=\"o\">%</span> <span class=\"n\">updated</span><span class=\"p\">,</span>\n            <span class=\"n\">messages</span><span class=\"o\">.</span><span class=\"n\">SUCCESS</span><span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n</code></pre></div>\n<p>Déanann sé seo an gníomh a mheaitseáil leis an méid a dhéanann an riarachán féin tar éis gníomh a dhéanamh go rathúil:</p>\n<img alt=\"/ga/5.2/_images/actions-as-modeladmin-methods.png\" src=\"/ga/5.2/_images/actions-as-modeladmin-methods.png\" />\n</section>\n<section id=\"actions-that-provide-intermediate-pages\">\n<h3>Gníomhartha a sholáthraíonn leathanaigh<a class=\"heading-anchor\" href=\"#actions-that-provide-intermediate-pages\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>De réir réamhshocraithe, tar éis gníomh a dhéanamh atreoraítear an t-úsáideoir ar ais chuig an leathanach liosta athraithe bunaidh. Mar sin féin, beidh ar roinnt gníomhartha, go háirithe cinn níos casta, leathanaigh idirmheánacha a thabhairt ar ais. Mar shampla, iarrann an gníomh scriosta ionsuite deimhniú sula ndéanann siad na rudaí roghnaithe a scriosadh.</p>\n<p>Chun leathanach idirghabhála a sholáthar, cuir ar ais an:class: ~django.http.httpResponse (nó fo-aicme) ó do ghníomhaíocht. Mar shampla, d'fhéadfá feidhm onnmhairiúcháin a scríobh a úsáideann django's:doc: feidhmeanna sraitheach chun roinnt rudaí roghnaithe a dhumpáil mar &lt;/topics/serialization&gt; JSON:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">serializers</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">export_as_json</span><span class=\"p\">(</span><span class=\"n\">modeladmin</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n    <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"n\">content_type</span><span class=\"o\">=</span><span class=\"s2\">&quot;application/json&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">serializers</span><span class=\"o\">.</span><span class=\"n\">serialize</span><span class=\"p\">(</span><span class=\"s2\">&quot;json&quot;</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">,</span> <span class=\"n\">stream</span><span class=\"o\">=</span><span class=\"n\">response</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">response</span>\n</code></pre></div>\n<p>Go ginearálta, ní mheastar gur smaoineamh iontach é rud éigin mar an méid thuas. An chuid is mó den am, is é an cleachtas is fearr ná filleadh an:class: ~django.http.http.HttpResponsereDirect agus an t-úsáideoir a atreorú chuig radharc a scríobh tú, ag dul ar liosta na rudaí roghnaithe sa teaghrán ceisteanna GET. Ligeann sé seo duit loighic idirghníomhú casta a sholáthar ar na leathanaigh idir Mar shampla, más mian leat feidhm easpórtála níos iomláine a sholáthar, ba mhaith leat ligean don úsáideoir formáid a roghnú, agus b'fhéidir liosta réimsí le cur san onnmhairiú. Is é an rud is fearr le déanamh ná gníomh beag a scríobh a atreoraíonn chuig do radharc saincheaptha onnmhairithe:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.contenttypes.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ContentType</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponseRedirect</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">export_selected_objects</span><span class=\"p\">(</span><span class=\"n\">modeladmin</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n    <span class=\"n\">selected</span> <span class=\"o\">=</span> <span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">values_list</span><span class=\"p\">(</span><span class=\"s2\">&quot;pk&quot;</span><span class=\"p\">,</span> <span class=\"n\">flat</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    <span class=\"n\">ct</span> <span class=\"o\">=</span> <span class=\"n\">ContentType</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get_for_model</span><span class=\"p\">(</span><span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">model</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">HttpResponseRedirect</span><span class=\"p\">(</span>\n        <span class=\"s2\">&quot;/export/?ct=</span><span class=\"si\">%s</span><span class=\"s2\">&amp;ids=</span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span>\n        <span class=\"o\">%</span> <span class=\"p\">(</span>\n            <span class=\"n\">ct</span><span class=\"o\">.</span><span class=\"n\">pk</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;,&quot;</span><span class=\"o\">.</span><span class=\"n\">join</span><span class=\"p\">(</span><span class=\"nb\">str</span><span class=\"p\">(</span><span class=\"n\">pk</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">pk</span> <span class=\"ow\">in</span> <span class=\"n\">selected</span><span class=\"p\">),</span>\n        <span class=\"p\">)</span>\n    <span class=\"p\">)</span>\n</code></pre></div>\n<p>Mar a fheiceann tú, tá an gníomh sách gearr; bheadh an loighic chasta go léir i do dhearcadh onnmhairithe. Bheadh sé seo déileáil le rudaí de chineál ar bith, dá bhrí sin an gnó leis an “ContentType”.</p>\n<p>Fágtar an dearcadh seo a scríobh mar chleachtadh don léitheoir.</p>\n</section>\n<section id=\"making-actions-available-site-wide\">\n<span id=\"adminsite-actions\"></span><h3>Gníomhartha a chur ar fáil ar fud an suíomh<a class=\"heading-anchor\" href=\"#making-actions-available-site-wide\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.add_action\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">add_action</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">action</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.add_action\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Is fearr roinnt gníomhartha má chuirtear iad ar fáil dó* aon réad ar shuíomh riaracháin - is iarrthóir maith a bheadh an gníomh onnmhairithe a shainmhínítear thuas. Is féidir leat gníomh a chur ar fáil ar fud an domhain ag baint úsáid:meth: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>adminsite.add_action () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>. Mar shampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">add_action</span><span class=\"p\">(</span><span class=\"n\">export_selected_objects</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Fágann sé seo an gníomh <code class=\"docutils literal notranslate\"><span class=\"pre\">export_selected_objects</span></code> ar fáil ar fud an domhain mar ghníomh darb ainm “export_selected_objects”. Is féidir leat ainm a thabhairt go sainráite don ghníomh -- go maith más mian leat go cláraitheach níos déanaí:ref: bain an gníomh &lt;disabling-admin-actions&gt;-- tríd an dara argóint a rith chuig:meth: adminsite.add_action ():</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">add_action</span><span class=\"p\">(</span><span class=\"n\">export_selected_objects</span><span class=\"p\">,</span> <span class=\"s2\">&quot;export_selected&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"disabling-actions\">\n<span id=\"disabling-admin-actions\"></span><h3>Gníomhartha díchumasaithe<a class=\"heading-anchor\" href=\"#disabling-actions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Uaireanta ní mór duit gníomhartha áirithe a dhíchumasú - go háirithe iad siú:ref: cláraithe ar fud an láithreáin &lt;adminsite-actions&gt;- le haghaidh rudaí áirithe. Tá cúpla bealach ann is féidir leat gníomhartha a dhíchumasú:</p>\n<section id=\"disabling-a-site-wide-action\">\n<h4>Gníomh ar fud an láithreáin a dhíchumasú<a class=\"heading-anchor\" href=\"#disabling-a-site-wide-action\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.disable_action\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">disable_action</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.disable_action\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Más gá duit a: ref: gníomh ar fud an láithreáin `a dhíchumasú is féidir leat glaoch ar: &lt;adminsite-actions&gt;meth: `adminsite.disable_action ().</p>\n<p>Mar shampla, is féidir leat an modh seo a úsáid chun an gníomh ionsuite “scrios rudaí roghnaithe” a bhaint:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">disable_action</span><span class=\"p\">(</span><span class=\"s2\">&quot;delete_selected&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Nuair a bheidh an méid thuas déanta agat, ní bheidh an gníomh sin ar fáil ar fud an láithreáin a thuilleadh.</p>\n<p>Más gá duit, áfach, gníomh faoi mhíchumas domhanda a athchumasú do mhúnla áirithe amháin, liostaigh é go sainráite i do liosta <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>ModelAdmin.Actions`:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Globally disable delete selected</span>\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">disable_action</span><span class=\"p\">(</span><span class=\"s2\">&quot;delete_selected&quot;</span><span class=\"p\">)</span>\n\n\n<span class=\"c1\"># This ModelAdmin will not have delete_selected available</span>\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">SomeModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">actions</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;some_other_action&quot;</span><span class=\"p\">]</span>\n    <span class=\"o\">...</span>\n\n\n<span class=\"c1\"># This one will</span>\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AnotherModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">actions</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;delete_selected&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;a_third_action&quot;</span><span class=\"p\">]</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"disabling-all-actions-for-a-particular-modeladmin\">\n<h4>Gach gníomh a dhíchumasú le haghaidh áirithe: class: ModelAdmin<a class=\"heading-anchor\" href=\"#disabling-all-actions-for-a-particular-modeladmin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Más mian leat mórghníomhaíochtaí <em>no</em> ar fáil le haghaidh tugadh: class: ModelAdmin, socraí:attr: ModelAdmin.actions go <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">actions</span> <span class=\"o\">=</span> <span class=\"kc\">None</span>\n</code></pre></div>\n<p>&lt;adminsite-actions&gt;Insíonn sé seo la:class: ModelAdmin gan aon ghníomhartha a thaispeáint ná a cheadú, lena n-áirítear aon ghníomhartha: ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>láithreáin ghníomhartha <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n</section>\n<section id=\"conditionally-enabling-or-disabling-actions\">\n<h4>gníomhartha a chumasú nó a dhíchumasú<a class=\"heading-anchor\" href=\"#conditionally-enabling-or-disabling-actions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_actions\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_actions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_actions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Faoi dheireadh, is féidir leat gníomhartha a chumasú nó a dhíchumasú go coinníollach ar aghaidh iarratais (agus dá bhrí sin in aghaidh an úsáideora) trí:meth: ModelAdmin.get_actions a ró-dhiaidh.</p>\n<p>Tugann sé seo foclóir gníomhartha ceadaithe ar ais. Is ainmneacha gníomhaíochta iad na heochracha, agus is iad na luachanna <code class=\"docutils literal notranslate\"><span class=\"pre\">(feidhm,</span> <span class=\"pre\">ainm,</span> <span class=\"pre\">gearr_description)</span></code> tuples.</p>\n<p>Mar shampla, mura dteastaíonn uait ach go mbeidh úsáideoirí a dtosaíonn a n-ainmneacha le 'J' in ann rudaí a scriosadh ar an mórchóir:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_actions</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">):</span>\n        <span class=\"n\">actions</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_actions</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n        <span class=\"k\">if</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">username</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">upper</span><span class=\"p\">()</span> <span class=\"o\">!=</span> <span class=\"s2\">&quot;J&quot;</span><span class=\"p\">:</span>\n            <span class=\"k\">if</span> <span class=\"s2\">&quot;delete_selected&quot;</span> <span class=\"ow\">in</span> <span class=\"n\">actions</span><span class=\"p\">:</span>\n                <span class=\"k\">del</span> <span class=\"n\">actions</span><span class=\"p\">[</span><span class=\"s2\">&quot;delete_selected&quot;</span><span class=\"p\">]</span>\n        <span class=\"k\">return</span> <span class=\"n\">actions</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"setting-permissions-for-actions\">\n<span id=\"admin-action-permissions\"></span><h3>Ceadanna a shocrú le haghaidh gníomhar<a class=\"heading-anchor\" href=\"#setting-permissions-for-actions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Féadfaidh gníomhartha a n-infhaighteacht a theorannú d'úsáideoirí a bhfuil ceadanna sonracha acu tríd an bhfeidhm ghníomhaíochta a fhilleadh leis an maisitheoir: func: ~django.contrib.admin.action agus an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">ceadúna</span></code> a rith:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">action</span><span class=\"p\">(</span><span class=\"n\">permissions</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;change&quot;</span><span class=\"p\">])</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">make_published</span><span class=\"p\">(</span><span class=\"n\">modeladmin</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n    <span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">status</span><span class=\"o\">=</span><span class=\"s2\">&quot;p&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Ní bheidh an gníomh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>make_published () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>ar fáil ach d'úsáideoirí a rachaidh an seice:meth: .modeladmin.has_change_permission.</p>\n<p>Má tá níos mó ná cead amháin ag ceadúnaí, beidh an gníomh ar fáil chomh fada agus a rachaidh an t-úsáideoir ceann amháin de na seiceálacha ar a laghad.</p>\n<p>Is iad na luachanna atá ar fáil le haghaidh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>ceadui' agus na seiceálacha modh comhfhreagracha:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'add'</span></code>: :meth: .ModelAdmin.has_Add_Permission</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'athraithe</span></code>: :meth: .modelAdmin.has_Change_Ceadúnaí</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'delete'</span></code>: :meth: .modeladmin.has_delete_ceadúnaí</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'view'</span></code>: :meth: .modeladmin.has_view_permission</p></li>\n</ul>\n<p>Is féidir leat aon luach eile a shonrú chomh fada agus a chuireann tú modh comhfhreagrach <code class=\"docutils literal notranslate\"><span class=\"pre\">hais_</span> <span class=\"pre\">&lt;value&gt;_cead</span> <span class=\"pre\">(féin,</span> <span class=\"pre\">iarraidh)</span> <span class=\"pre\">``i</span> <span class=\"pre\">bhfeidhm</span> <span class=\"pre\">ar</span> <span class=\"pre\">an</span> <span class=\"pre\">`ModelAdmin</span></code>.</p>\n<p>Mar shampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.auth</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">get_permission_codename</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">actions</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;make_published&quot;</span><span class=\"p\">]</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">action</span><span class=\"p\">(</span><span class=\"n\">permissions</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;publish&quot;</span><span class=\"p\">])</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">make_published</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n        <span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">status</span><span class=\"o\">=</span><span class=\"s2\">&quot;p&quot;</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">has_publish_permission</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">):</span>\n<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot;Does the user have the publish permission?&quot;&quot;&quot;</span>\n        <span class=\"n\">opts</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">opts</span>\n        <span class=\"n\">codename</span> <span class=\"o\">=</span> <span class=\"n\">get_permission_codename</span><span class=\"p\">(</span><span class=\"s2\">&quot;publish&quot;</span><span class=\"p\">,</span> <span class=\"n\">opts</span><span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">has_perm</span><span class=\"p\">(</span><span class=\"s2\">&quot;</span><span class=\"si\">%s</span><span class=\"s2\">.</span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span> <span class=\"o\">%</span> <span class=\"p\">(</span><span class=\"n\">opts</span><span class=\"o\">.</span><span class=\"n\">app_label</span><span class=\"p\">,</span> <span class=\"n\">codename</span><span class=\"p\">))</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"the-action-decorator\">\n<h2>An maisitheoir <code class=\"docutils literal notranslate\"><span class=\"pre\">gníomha</span></code><a class=\"heading-anchor\" href=\"#the-action-decorator\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.action\">\n<span class=\"sig-name descname\"><span class=\"pre\">action</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\"><span class=\"pre\">*</span></abbr></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">permissions</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">description</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.action\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Is féidir an maisitheoir seo a úsáid chun tréithe sonracha a shocrú ar fheidhmeanna gníomhaíochta saincheaptha is féidir a úsáid le:attr: ~django.contrib.admin.modelAdmin.actions:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">action</span><span class=\"p\">(</span>\n    <span class=\"n\">permissions</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;publish&quot;</span><span class=\"p\">],</span>\n    <span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Mark selected stories as published&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">make_published</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n    <span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">status</span><span class=\"o\">=</span><span class=\"s2\">&quot;p&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Tá sé seo comhionann le roinnt tréithe (leis na hainmneacha bunaidh, níos faide) a shocrú go díreach ar an bhfeidhm:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">make_published</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n    <span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">status</span><span class=\"o\">=</span><span class=\"s2\">&quot;p&quot;</span><span class=\"p\">)</span>\n\n\n<span class=\"n\">make_published</span><span class=\"o\">.</span><span class=\"n\">allowed_permissions</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;publish&quot;</span><span class=\"p\">]</span>\n<span class=\"n\">make_published</span><span class=\"o\">.</span><span class=\"n\">short_description</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Mark selected stories as published&quot;</span>\n</code></pre></div>\n<p>Níl sé éigeantach an maisitheoir seo a úsáid chun feidhm ghníomhaíochta 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:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">action</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">make_inactive</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">):</span>\n    <span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">is_active</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Sa chás seo ní chuirfidh sé aon tréithe leis an bhfeidhm.</p>\n<p>Tá tuairiscí gníomhaíochta %-formáidithe agus d'fhéadfadh go mbeadh <code class=\"docutils literal notranslate\"><span class=\"pre\">'%</span> <span class=\"pre\">(verbose_name)</span> <span class=\"pre\">s'</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">`%</span> <span class=\"pre\">(verbose_name_plural)</span> <span class=\"pre\">s'</span></code> iontu, a chuirtear na samhlacha 's:attr: ~django.db.models.options.verbose_name agus:attr: ~django.db.models.options.options.Verbose_Ainm_Plural.</p>\n</dd></dl>\n\n</section>","rootId":"admin-actions","toc":[{"title":"Gníomhartha scrí","anchor":"writing-actions","children":[{"title":"Feidhmeanna gníomhaíochta","anchor":"writing-action-functions","children":[]},{"title":"Gníomhartha a chur leis an:class: ModelAdmin","anchor":"adding-actions-to-the-modeladmin","children":[]},{"title":"Earráidí láimhseála i ngn","anchor":"handling-errors-in-actions","children":[]}]},{"title":"Teicnící gníomhaíochta chun","anchor":"advanced-action-techniques","children":[{"title":"Gníomhartha cosúil:class: ModelAdmin modhanna","anchor":"actions-as-modeladmin-methods","children":[]},{"title":"Gníomhartha a sholáthraíonn leathanaigh","anchor":"actions-that-provide-intermediate-pages","children":[]},{"title":"Gníomhartha a chur ar fáil ar fud an suíomh","anchor":"making-actions-available-site-wide","children":[]},{"title":"Gníomhartha díchumasaithe","anchor":"disabling-actions","children":[{"title":"Gníomh ar fud an láithreáin a dhíchumasú","anchor":"disabling-a-site-wide-action","children":[]},{"title":"Gach gníomh a dhíchumasú le haghaidh áirithe: class: ModelAdmin","anchor":"disabling-all-actions-for-a-particular-modeladmin","children":[]},{"title":"gníomhartha a chumasú nó a dhíchumasú","anchor":"conditionally-enabling-or-disabling-actions","children":[]}]},{"title":"Ceadanna a shocrú le haghaidh gníomhar","anchor":"setting-permissions-for-actions","children":[]}]},{"title":"An maisitheoir gníomha","anchor":"the-action-decorator","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Tagairt API","url":"/ga/5.2/ref/"},{"docname":"ref/contrib/index","title":"Pacáistí contrib","url":"/ga/5.2/ref/contrib/"},{"docname":"ref/contrib/admin/index","title":"Suíomh riaracháin Django","url":"/ga/5.2/ref/contrib/admin/"}],"prev":{"docname":"ref/contrib/admin/index","title":"Suíomh riaracháin Django","url":"/ga/5.2/ref/contrib/admin/"},"next":{"docname":"ref/contrib/admin/filters","title":"ModelAdmin Scagairí Liosta","url":"/ga/5.2/ref/contrib/admin/filters/"},"formats":{"html":"/ga/5.2/ref/contrib/admin/actions/","markdown":"/ga/5.2/ref/contrib/admin/actions.md","json":"/ga/5.2/ref/contrib/admin/actions.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/ref/contrib/admin/actions.txt","official":"https://docs.djangoproject.com/ga/5.2/ref/contrib/admin/actions/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}