{"title":"Foirmeacha","version":"6.1","locale":"ga","docname":"topics/forms/formsets","url":"/ga/6.1/topics/forms/formsets/","canonical":"https://djangodocs.dev/ga/6.1/topics/forms/formsets/","summary":"Is sraith teastartha é foirmshraith chun oibriú le foirmeacha iolracha ar an leathanach céanna. Is féidir é a bheith is fearr i gcomparáid le greille sonraí.","html":"<h1>Foirmeacha<a class=\"heading-anchor\" href=\"#formsets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BaseFormSet</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Is sraith teastartha é foirmshraith chun oibriú le foirmeacha iolracha ar an leathanach céanna. Is féidir é a bheith is fearr i gcomparáid le greille sonraí. Abair go bhfuil an fhoirm seo a leanas agat:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django</span> <span class=\"kn\">import</span> forms\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">ArticleForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    title <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">... </span>    pub_date <span class=\"o\">=</span> forms<span class=\"o\">.</span>DateField<span class=\"p\">()</span>\n<span class=\"gp\">...</span>\n</code></pre></div>\n<p>B'fhéidir gur mhaith leat ligean don úsáideoir roinnt alt a chruthú ag an am céanna. Chun foirm a chruthú as <code class=\"docutils literal notranslate\">Airteagal Form</code> déanfaí an méid seo a leanas:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">)</span>\n</code></pre></div>\n<p>Tá rang formset cruthaithe agat anois darb ainm <code class=\"docutils literal notranslate\">ArticleFormSet</code>. Tugann an tacar foirmeacha a thaispeáint tugtar an cumas duit athrá a dhéanamh thar na foirmeacha sa tacar foirme agus iad a thaispeáint mar a dhéanfá le foirm rialta:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> form <span class=\"ow\">in</span> formset<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>form<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-title&quot; id=&quot;id_form-0-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-pub_date&quot; id=&quot;id_form-0-pub_date&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>Mar a fheiceann tú ní thaispeánann sé ach foirm folamh amháin. Tá líon na bhfoirmeacha folamh a thaispeántar á rialú ag an bparaiméadar <code class=\"docutils literal notranslate\">breise</code>. De réir réamhshocraithe, :func: ~django.forms.formsets.formsets.formset_factory sainmhíníonn foirm bhreise amháin; cruthóidh an sampla seo a leanas rang formset chun dhá fhoirm bán a thaispeáint:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">,</span> extra<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Formsets can be iterated and indexed, accessing forms in the order they were\ncreated. You can reorder the forms by overriding the default\n<a class=\"reference external\" href=\"https://docs.python.org/3/reference/datamodel.html#object.__iter__\" title=\"(in Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">__iter__()</code></a> and <a class=\"reference external\" href=\"https://docs.python.org/3/reference/datamodel.html#object.__getitem__\" title=\"(in Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">__getitem__()</code></a> methods if needed.\n(For more information on implementing these methods, see the\n<a class=\"reference external\" href=\"https://docs.python.org/3/glossary.html#term-sequence\" title=\"(in Python v3.14)\"><span class=\"xref std std-term\">Python documentation on sequences</span></a>.)</p>\n<section id=\"using-initial-data-with-a-formset\">\n<span id=\"formsets-initial-data\"></span><h2>Sonraí tosaigh a úsáid le tacar foirme<a class=\"heading-anchor\" href=\"#using-initial-data-with-a-formset\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Is iad na sonraí tosaigh an rud a spreagann príomh-inúsáidteacht foirmshraith. Mar a thaispeántar thuas is féidir leat líon na bhfoirmeacha breise a shainiú. Is é an rud a chiallaíonn sé seo ná go bhfuil tú ag insint don fhoirm cé mhéad foirm bhreise atá le taispeáint i dteannta leis an líon foirmeacha a ghineann sé ó na sonraí tosaigh. Breathnaímid ar shampla:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span> <span class=\"nn\">datetime</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">,</span> extra<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    initial<span class=\"o\">=</span><span class=\"p\">[</span>\n<span class=\"gp\">... </span>        <span class=\"p\">{</span>\n<span class=\"gp\">... </span>            <span class=\"s2\">&quot;title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Django is now open source&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>            <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">:</span> datetime<span class=\"o\">.</span>date<span class=\"o\">.</span>today<span class=\"p\">(),</span>\n<span class=\"gp\">... </span>        <span class=\"p\">}</span>\n<span class=\"gp\">... </span>    <span class=\"p\">]</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> form <span class=\"ow\">in</span> formset<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>form<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-title&quot; value=&quot;Django is now open source&quot; id=&quot;id_form-0-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-pub_date&quot; value=&quot;2023-02-11&quot; id=&quot;id_form-0-pub_date&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-1-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-1-title&quot; id=&quot;id_form-1-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-1-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-1-pub_date&quot; id=&quot;id_form-1-pub_date&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-2-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-2-title&quot; id=&quot;id_form-2-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-2-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-2-pub_date&quot; id=&quot;id_form-2-pub_date&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>Tá trí fhoirm san iomlán anois ag taispeáint thuas. Ceann amháin do na sonraí tosaigh a cuireadh isteach agus dhá fhoirm bhreise. Tabhair faoi deara freisin go bhfuilimid ag dul isteach i liosta foclóirí mar na sonraí tosaigh.</p>\n<p>Má úsáideann tú <code class=\"docutils literal notranslate\">tosaithe</code> chun tacar foirme a thaispeáint, ba cheart duit an <code class=\"docutils literal notranslate\">tosaitheach</code> céanna a rith agus tú ag próiseáil aighneacht foirmeacha sin ionas gur féidir leis an tacar foirme a bhrath cé na foirmeacha a d'athraigh an t-úsáideoir. Mar shampla, b'fhéidir go mbeadh rud éigin cosúil le: <code class=\"docutils literal notranslate\">ArticleFormSet (request.post, initial= [...])</code>.</p>\n<aside class=\"admonition admonition-seealso\" role=\"note\">\n<p class=\"admonition-title\">See also</p>\n<p>&lt;model-formsets&gt;:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Foirmeacha a chruthú ó mhúnlaí le foirmeacha samhail <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n</aside>\n</section>\n<section id=\"limiting-the-maximum-number-of-forms\">\n<span id=\"formsets-max-num\"></span><h2>An líon uasta na bhfoirmeacha a theorannú<a class=\"heading-anchor\" href=\"#limiting-the-maximum-number-of-forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tugann an paraiméadar <code class=\"docutils literal notranslate\">max_num</code> to:func: ~django.forms.formsets.formset_factory an cumas duit líon na bhfoirmeacha a thaispeánfaidh an formset a theorannú:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">,</span> extra<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">,</span> max_num<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> form <span class=\"ow\">in</span> formset<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>form<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-title&quot; id=&quot;id_form-0-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-pub_date&quot; id=&quot;id_form-0-pub_date&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>Má tá luach <code class=\"docutils literal notranslate\">max_num</code> níos mó ná líon na míreanna atá ann cheana sna sonraí tosaigh, cuirfear foirmeacha bán breise suas le <code class=\"docutils literal notranslate\">extra</code> leis an tacar foirmeacha, fad nach mbeidh líon iomlán na bhfoirmeacha níos mó ná <code class=\"docutils literal notranslate\">max_num</code>. Mar shampla, má tá <code class=\"docutils literal notranslate\">extra=2</code> agus <code class=\"docutils literal notranslate\">max_num=2</code> agus má thosaítear an foirmshraith le mír <code class=\"docutils literal notranslate\">initial</code> amháin, taispeánfar foirm don mhír tosaigh agus foirm bán amháin.</p>\n<p>Má sháraíonn líon na míreanna sna sonraí tosaigh <code class=\"docutils literal notranslate\">max_num</code>, taispeánfar gach foirm sonraí tosaigh beag beann ar luach <code class=\"docutils literal notranslate\">max_num</code> agus ní thaispeánfar aon fhoirmeacha breise. Mar shampla, má tá <code class=\"docutils literal notranslate\">extra=3</code> agus <code class=\"docutils literal notranslate\">max_num=1</code> agus má dhá mhír tosaigh an foirmeach a thosú, taispeánfar dhá fhoirm leis na sonraí tosaigh.</p>\n<p>Cuireann luach <code class=\"docutils literal notranslate\">max_num</code> de <code class=\"docutils literal notranslate\">None</code> (an réamhshocrú) teorainn ard ar líon na bhfoirmeacha a thaispeántar (1000). Go praiticiúil tá sé seo coibhéiseach le haon teorainn.</p>\n<p>By default, <code class=\"docutils literal notranslate\">max_num</code> only affects how many forms are displayed and does not\naffect validation. If <code class=\"docutils literal notranslate\">validate_max=True</code> is passed to the\n<a class=\"reference internal\" href=\"/ga/6.1/ref/forms/formsets/#django.forms.formsets.formset_factory\" title=\"django.forms.formsets.formset_factory\"><code class=\"xref py py-func docutils literal notranslate\">formset_factory()</code></a>, then <code class=\"docutils literal notranslate\">max_num</code> will affect\nvalidation. See <a class=\"reference internal\" href=\"#validate-max\"><span class=\"std std-ref\">bailite_max</span></a>.</p>\n</section>\n<section id=\"limiting-the-maximum-number-of-instantiated-forms\">\n<span id=\"formsets-absolute-max\"></span><h2>Uaslíon na bhfoirmeacha ionchasacha a theorannú<a class=\"heading-anchor\" href=\"#limiting-the-maximum-number-of-instantiated-forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Ceadaíonn an paraiméadar <code class=\"docutils literal notranslate\">absolute_max</code> to:func: .formset_factory líon na bhfoirmeacha is féidir a dhéanamh a theorannú nuair a sholáthraítear sonraí POST `. Cosnaíonn sé seo i gcoinne ionsaithe ídithe cuimhne ag úsáid iarratais brionnaithe <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>POST ``</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms.formsets</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">,</span> absolute_max<span class=\"o\">=</span><span class=\"mi\">1500</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-TOTAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1501&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-INITIAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">len</span><span class=\"p\">(</span>formset<span class=\"o\">.</span>forms<span class=\"p\">)</span>\n<span class=\"go\">1500</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>non_form_errors<span class=\"p\">()</span>\n<span class=\"go\">[&#39;Please submit at most 1000 forms.&#39;]</span>\n</code></pre></div>\n<p>Nuair is é <code class=\"docutils literal notranslate\">absolute_max</code> <code class=\"docutils literal notranslate\">None ``, réamhshocraithe é go ``max_num + 1000</code>. (Má tá <code class=\"docutils literal notranslate\">`max_num</code> <code class=\"docutils literal notranslate\">None ``, réamhshocraithe é go ``2000</code>).</p>\n<p>Má tá <code class=\"docutils literal notranslate\">absolute_max</code> níos lú ná <code class=\"docutils literal notranslate\">max_num</code>, ardófar <code class=\"docutils literal notranslate\">Error lua</code>.</p>\n</section>\n<section id=\"formset-validation\">\n<h2>Bailíochtú Formset<a class=\"heading-anchor\" href=\"#formset-validation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tá bailíochtú le tacar foirme beagnach comhionann le <code class=\"docutils literal notranslate\">Foirm ``rialta. Tá modh ``is_valid</code> ar an tacar foirmeacha chun bealach áisiúil a sholáthar chun gach foirm sa tacar foirme a bhailíochtú:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-TOTAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-INITIAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n<p>Níor chuireamar aon sonraí isteach chuig an tacar foirme a bhfuil foirm bhailí mar thoradh air. Tá an tacar foirmeacha cliste go leor chun neamhaird a dhéanamh ar fhoirmeacha breise nár athraíodh. Má sholáthraímid alt neamhbhailí:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-TOTAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-INITIAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Test&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1904-06-16&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Test&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>  <span class=\"c1\"># &lt;-- this date is missing but required</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>errors\n<span class=\"go\">[{}, {&#39;pub_date&#39;: [&#39;This field is required.&#39;]}]</span>\n</code></pre></div>\n<p>Mar a fheicimid, is liosta é <code class=\"docutils literal notranslate\">formset.errors</code> a fhreagraíonn a n-iontrálacha do na foirmeacha sa tacar foirmeacha. Rinneadh bailíochtú do gach ceann den dá fhoirm, agus tá an teachtaireacht earráide ag súil leis le feiceáil don dara mír.</p>\n<p>Díreach cosúil le gnáth-Foirm ``á n-úsáid, d'fhéadfadh tréithe HTML mar ``maxlength` a bheith san áireamh i ngach réimse i bhfoirmeacha foirmeacha le haghaidh bailíochtaithe brabhsálaí. Mar sin féin, ní chuimsíonn réimsí foirmeacha foirmeacha an tréith <code class=\"docutils literal notranslate\">riachtan</code> mar d'fhéadfadh an bailíochtú sin a bheith mícheart agus foirmeacha á gcur leis agus á scriosadh.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.total_error_count\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">total_error_count</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.total_error_count\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Chun a sheiceáil cé mhéad earráid atá sa fhoirmset, is féidir linn an modh total_error_count` a úsáid:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Using the previous example</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>errors\n<span class=\"go\">[{}, {&#39;pub_date&#39;: [&#39;This field is required.&#39;]}]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">len</span><span class=\"p\">(</span>formset<span class=\"o\">.</span>errors<span class=\"p\">)</span>\n<span class=\"go\">2</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>total_error_count<span class=\"p\">()</span>\n<span class=\"go\">1</span>\n</code></pre></div>\n<p>Is féidir linn a sheiceáil freisin an bhfuil sonraí foirme difriúil ó na sonraí tosaigh (ie seoladh an fhoirm gan aon sonraí):</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-TOTAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-INITIAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>has_changed<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n</code></pre></div>\n<section id=\"understanding-the-managementform\">\n<span id=\"id1\"></span><h3>An “Foirm Bainistíochta” a thuiscint<a class=\"heading-anchor\" href=\"#understanding-the-managementform\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>B'fhéidir gur thug tú faoi deara na sonraí breise (<code class=\"docutils literal notranslate\">Form-Total_Forms</code>, Form-Initial_Forms`) a bhí ag teastáil i sonraí an fhoirmscair thuas. Tá na sonraí seo ag teastáil don <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Foirm Bainistíochta <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>. Úsáideann an tacar foirmeacha seo chun bailiúchán na bhfoirmeacha atá sa tacar foirme a bhainistiú. Mura gcuireann tú na sonraí bainistíochta seo ar fáil, beidh an tacar foirme neamhbhailí:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Test&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n</code></pre></div>\n<p>Úsáidtear é chun súil a choinneáil ar cé mhéad cásanna foirme atá á thaispeáint. Má tá foirmeacha nua á chur agat trí JavaScript, ba cheart duit na réimsí comhaireamh san fhoirm seo a mhéadú freisin. Ar an láimh eile, má tá JavaScript á úsáid agat chun rudaí atá ann cheana a scriosadh, ansin ní mór duit a chinntiú go ndéantar na cinn atá á mbaintear marcáilte i gceart lena scriosadh trí <code class=\"docutils literal notranslate\">Form-#-delete</code> a chur san áireamh sna sonraí POST `. Táthar ag súil go mbeidh gach foirm i láthair sna sonraí <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>POST <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>beag beann.</p>\n<p>Tá an fhoirm bhainistíochta ar fáil mar thréith den tacar foirme féin. Agus tacar foirme á rindreáil i dteimpléad, is féidir leat na sonraí bainistíochta go léir a chur san áireamh trí <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>{{my_formset.management_form}} <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>a rindreáil (ainm do thacar foirme a chur in ionad mar is cuí).</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Chomh maith leis na réimsí <code class=\"docutils literal notranslate\">Form-Total_Forms</code> agus <code class=\"docutils literal notranslate\">Form-Initial_Forms</code> a thaispeántar sna samplaí anseo, cuimsíonn an fhoirm bhainistíochta réimsí <code class=\"docutils literal notranslate\">Form-Min_Num_Forms</code> agus <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Form-Max_Num_Forms <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>freisin. Tá siad aschur leis an gcuid eile den fhoirm bhainistíochta, ach amháin ar mhaithe le háisiúlacht cód taobh an chliaint. Níl na réimsí seo ag teastáil agus mar sin ní thaispeántar iad sa shampla sonraí <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>POST <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>.</p>\n</aside>\n</section>\n<section id=\"total-form-count-and-initial-form-count\">\n<h3><code class=\"docutils literal notranslate\">comhaireann_foirme_iomlán</code> agus <code class=\"docutils literal notranslate\">comhaireann_foirme_tosaithe</code><a class=\"heading-anchor\" href=\"#total-form-count-and-initial-form-count\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tá cúpla modh ag <code class=\"docutils literal notranslate\">BaseFormSet</code> a bhfuil dlúthbhaint acu leis an <code class=\"docutils literal notranslate\">ManagementForm</code>, total_form_count` agus <code class=\"docutils literal notranslate\">initial_form_count</code>.</p>\n<p>Tugann <code class=\"docutils literal notranslate\">total_form_count</code> líon iomlán na bhfoirmeacha sa tacar foirme seo ar ais. Tugann <code class=\"docutils literal notranslate\">initial_form_count</code> líon na bhfoirmeacha sa tacar foirme a rinneadh réamh-líonadh, agus úsáidtear é freisin chun a chinneadh cé mhéad foirm atá ag teastáil. Is dócha nach mbeidh ort riamh ceachtar de na modhanna seo a shárú, mar sin bí cinnte le do thoil go dtuigeann tú cad a dhéanann siad sula ndéanann siad é sin.</p>\n</section>\n<section id=\"empty-form\">\n<span id=\"id2\"></span><h3><code class=\"docutils literal notranslate\">foirme_folam</code><a class=\"heading-anchor\" href=\"#empty-form\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Soláthraíonn <code class=\"docutils literal notranslate\">BaseFormSet</code> tréith bhreise <code class=\"docutils literal notranslate\">empty_form</code> a thugann sampla foirme le réimír <code class=\"docutils literal notranslate\">__prefix__</code> le húsáid níos éasca i bhfoirmeacha dinimiciúla le JavaScript.</p>\n</section>\n<section id=\"error-messages\">\n<span id=\"formsets-error-messages\"></span><h3><code class=\"docutils literal notranslate\">teachtaireachtaí earráid</code><a class=\"heading-anchor\" href=\"#error-messages\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ligeann an argóint <code class=\"docutils literal notranslate\">error_messages</code> duit na teachtaireachtaí réamhshocraithe a ardóidh an foirmset a shárú. Pas isteach i bhfoclóir le heochracha a mheaitseálann leis na teachtaireachtaí earráide is mian leat a shárú. I measc na heochracha teachtaireachta earráide tá <code class=\"docutils literal notranslate\">`too_few_forms'</code>, <code class=\"docutils literal notranslate\">too_many_forms'</code>, agus <code class=\"docutils literal notranslate\">`missing_management_form'</code>. D'fhéadfadh go mbeadh <code class=\"docutils literal notranslate\">% (num) d</code> sna teachtaireachtaí earráide <code class=\"docutils literal notranslate\">`too_few_forms'</code> agus <code class=\"docutils literal notranslate\">`too_many_forms'</code>, agus <code class=\"docutils literal notranslate\">max_num</code>, ina gcuirfear min_num` agus <code class=\"docutils literal notranslate\">max_num</code> in ionad <code class=\"docutils literal notranslate\">min_num</code> faoi seach.</p>\n<p>Mar shampla, seo an teachtaireacht earráide réamhshocraithe nuair a bhíonn an fhoirm bhainistíochta in easnamh:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">({})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>non_form_errors<span class=\"p\">()</span>\n<span class=\"go\">[&#39;ManagementForm data is missing or has been tampered with. Missing fields: form-TOTAL_FORMS, form-INITIAL_FORMS. You may need to file a bug report if the issue persists.&#39;]</span>\n</code></pre></div>\n<p>Agus seo teachtaireacht earráide saincheaptha:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"p\">{},</span> error_messages<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;missing_management_form&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Sorry, something went wrong.&quot;</span><span class=\"p\">}</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>non_form_errors<span class=\"p\">()</span>\n<span class=\"go\">[&#39;Sorry, something went wrong.&#39;]</span>\n</code></pre></div>\n</section>\n<section id=\"custom-formset-validation\">\n<h3>Bailíochtú foirm saincheaptha<a class=\"heading-anchor\" href=\"#custom-formset-validation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tá modh <code class=\"docutils literal notranslate\">glan ``ag tacar foirme cosúil leis an gceann ar rang ``Foirme</code>. Seo an áit a shainmhíníonn tú do bhailíochtú féin a oibríonn ag an leibhéal foirmset:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.core.exceptions</span> <span class=\"kn\">import</span> ValidationError\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> BaseFormSet\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">BaseArticleFormSet</span><span class=\"p\">(</span>BaseFormSet<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">def</span> <span class=\"nf\">clean</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>        <span class=\"sd\">&quot;&quot;&quot;Checks that no two articles have the same title.&quot;&quot;&quot;</span>\n<span class=\"gp\">... </span>        <span class=\"k\">if</span> <span class=\"nb\">any</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span>errors<span class=\"p\">):</span>\n<span class=\"gp\">... </span>            <span class=\"c1\"># Don&#39;t bother validating the formset unless each form is valid on its own</span>\n<span class=\"gp\">... </span>            <span class=\"k\">return</span>\n<span class=\"gp\">... </span>        titles <span class=\"o\">=</span> <span class=\"nb\">set</span><span class=\"p\">()</span>\n<span class=\"gp\">... </span>        <span class=\"k\">for</span> form <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span>forms<span class=\"p\">:</span>\n<span class=\"gp\">... </span>            <span class=\"k\">if</span> <span class=\"bp\">self</span><span class=\"o\">.</span>can_delete <span class=\"ow\">and</span> <span class=\"bp\">self</span><span class=\"o\">.</span>_should_delete_form<span class=\"p\">(</span>form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>                <span class=\"k\">continue</span>\n<span class=\"gp\">... </span>            title <span class=\"o\">=</span> form<span class=\"o\">.</span>cleaned_data<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>            <span class=\"k\">if</span> title <span class=\"ow\">in</span> titles<span class=\"p\">:</span>\n<span class=\"gp\">... </span>                <span class=\"k\">raise</span> ValidationError<span class=\"p\">(</span><span class=\"s2\">&quot;Articles in a set must have distinct titles.&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>            titles<span class=\"o\">.</span>add<span class=\"p\">(</span>title<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">,</span> formset<span class=\"o\">=</span>BaseArticleFormSet<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-TOTAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-INITIAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Test&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1904-06-16&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Test&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1912-06-23&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>errors\n<span class=\"go\">[{}, {}]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>non_form_errors<span class=\"p\">()</span>\n<span class=\"go\">[&#39;Articles in a set must have distinct titles.&#39;]</span>\n</code></pre></div>\n<p>Tugtar ar an modh <code class=\"docutils literal notranslate\">clean ``foirmeacha tar éis na modhanna ``Form.clean</code> go léir a ghlaoch. Faighfear na hearráidí ag baint úsáide as an modh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>non_form_errors () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>ar an tacar foirme.</p>\n<p>Déanfar earráidí neamh-fhoirme a thabhairt le aicme breise de <code class=\"docutils literal notranslate\">neamhfhoirme</code> chun cabhrú leo a idirdhealú ó earráidí foirm-shonracha. Mar shampla, bheadh cuma <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>{{formset.non_form_errors}} <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</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=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">ul</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;errorlist nonform&quot;</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>Articles in a set must have distinct titles.<span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"validating-the-number-of-forms-in-a-formset\">\n<h2>Líon na bhfoirmeacha i dtacar foirmeacha a bhailíochtú<a class=\"heading-anchor\" href=\"#validating-the-number-of-forms-in-a-formset\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Soláthraíonn Django cúpla bealach chun líon íosta nó uasta na bhfoirmeacha curtha isteach a bhailíochtú. Ba cheart d'iarratais a dteastaíonn bailíochtú níos inúsáidte uathu ar líon na bhfoirmeacha bailíochtú saincheaptha</p>\n<section id=\"validate-max\">\n<span id=\"id3\"></span><h3><code class=\"docutils literal notranslate\">bailite_max</code><a class=\"heading-anchor\" href=\"#validate-max\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Má chuirtear <code class=\"docutils literal notranslate\">validate_max=True</code> chuig: :func: ~django.forms.formsets.formset_factory, seiceálfaidh bailíochtú freisin go bhfuil líon na bhfoirmeacha sa tacar sonraí, lúide iad siúd atá marcáilte le scriosadh, níos lú ná <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>max_`num` nó cothrom le max_`num.</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">,</span> max_num<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> validate_max<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-TOTAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-INITIAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Test&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1904-06-16&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Test 2&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1912-06-23&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>errors\n<span class=\"go\">[{}, {}]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>non_form_errors<span class=\"p\">()</span>\n<span class=\"go\">[&#39;Please submit at most 1 form.&#39;]</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">validate_max=Bailíonn True</code> i gcoinne <code class=\"docutils literal notranslate\">max_num</code> go docht fiú má sháraíodh <code class=\"docutils literal notranslate\">max_num</code> toisc go raibh méid na sonraí tosaigh a sholáthraíodh iomarcach.</p>\n<p>Is féidir an teachtaireacht earráide a shaincheapadh tríd an teachtaireacht <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>too_many_forms' a chur chuig an argóint:ref: formsets-error-messages.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Beag beann ar <code class=\"docutils literal notranslate\">validate_max</code>, má sháraíonn líon na bhfoirmeacha i tacar sonraí <code class=\"docutils literal notranslate\">absolute_max</code>, ansin teipeann ar an bhfoirm a bhailíochtú amhail is dá gcuirfí validate_max` socraithe, agus ina theannta sin ní bheidh ach na chéad fhoirmeacha absolute_max` bailíochtaithe. Déanfar an chuid eile a ghearradh go hiomlán. Déanann sé seo chun cosaint a dhéanamh ar ionsaithe ídithe cuimhne ag baint úsáide as iarrat Féach: tagairt: formsets-absolute-max.</p>\n</aside>\n</section>\n<section id=\"validate-min\">\n<h3><code class=\"docutils literal notranslate\">bailate_min</code><a class=\"heading-anchor\" href=\"#validate-min\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Má chuirtear <code class=\"docutils literal notranslate\">validate_min=True</code> chuig: :func: ~django.forms.formsets.formset_factory, seiceálfaidh bailíochtú freisin go bhfuil líon na bhfoirmeacha sa tacar sonraí, lúide iad siúd atá marcáilte le scriosadh, níos mó ná <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>min_`num` nó cothrom le min_`num.</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">,</span> min_num<span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">,</span> validate_min<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-TOTAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-INITIAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Test&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1904-06-16&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Test 2&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1912-06-23&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>errors\n<span class=\"go\">[{}, {}]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset<span class=\"o\">.</span>non_form_errors<span class=\"p\">()</span>\n<span class=\"go\">[&#39;Please submit at least 3 forms.&#39;]</span>\n</code></pre></div>\n<p>Is féidir an teachtaireacht earráide a shaincheapadh tríd an teachtaireacht <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>too_few_forms' a chur chuig argóint:ref: formsets-error-messages.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Beag beann ar <code class=\"docutils literal notranslate\">validate_min</code>, mura bhfuil aon sonraí i bhfoirmshraith, taispeánfar foirmeacha folamh <code class=\"docutils literal notranslate\">extra + min_num</code>.</p>\n</aside>\n</section>\n</section>\n<section id=\"dealing-with-ordering-and-deletion-of-forms\">\n<h2>Déileáil le foirmeacha a ordú agus a scriosadh<a class=\"heading-anchor\" href=\"#dealing-with-ordering-and-deletion-of-forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Soláthraíonn an: Func: ~django.forms.formsets.formset_factory dhá pharaiméadar roghnach <code class=\"docutils literal notranslate\">can_order</code> agus <code class=\"docutils literal notranslate\">can_delete</code> chun cabhrú le foirmeacha a ordú i bhfoirmeacha agus foirmeacha a scriosadh ó fhoirmshraith.</p>\n<section id=\"can-order\">\n<h3><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Is féidir _ordú ``<a class=\"heading-anchor\" href=\"#can-order\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.can_order\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">can_order</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.can_order\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Réamhshocraithe: <code class=\"docutils literal notranslate\">Fréag</code></p>\n<p>Ligeann duit tacar foirme a chruthú leis an gcumas a ordú:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">,</span> can_order<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    initial<span class=\"o\">=</span><span class=\"p\">[</span>\n<span class=\"gp\">... </span>        <span class=\"p\">{</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">:</span> datetime<span class=\"o\">.</span>date<span class=\"p\">(</span><span class=\"mi\">2008</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">)},</span>\n<span class=\"gp\">... </span>        <span class=\"p\">{</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">:</span> datetime<span class=\"o\">.</span>date<span class=\"p\">(</span><span class=\"mi\">2008</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">11</span><span class=\"p\">)},</span>\n<span class=\"gp\">... </span>    <span class=\"p\">]</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> form <span class=\"ow\">in</span> formset<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>form<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-title&quot; value=&quot;Article #1&quot; id=&quot;id_form-0-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-pub_date&quot; value=&quot;2008-05-10&quot; id=&quot;id_form-0-pub_date&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-ORDER&quot;&gt;Order:&lt;/label&gt;&lt;input type=&quot;number&quot; name=&quot;form-0-ORDER&quot; value=&quot;1&quot; id=&quot;id_form-0-ORDER&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-1-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-1-title&quot; value=&quot;Article #2&quot; id=&quot;id_form-1-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-1-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-1-pub_date&quot; value=&quot;2008-05-11&quot; id=&quot;id_form-1-pub_date&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-1-ORDER&quot;&gt;Order:&lt;/label&gt;&lt;input type=&quot;number&quot; name=&quot;form-1-ORDER&quot; value=&quot;2&quot; id=&quot;id_form-1-ORDER&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-2-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-2-title&quot; id=&quot;id_form-2-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-2-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-2-pub_date&quot; id=&quot;id_form-2-pub_date&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-2-ORDER&quot;&gt;Order:&lt;/label&gt;&lt;input type=&quot;number&quot; name=&quot;form-2-ORDER&quot; id=&quot;id_form-2-ORDER&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>Cuireann sé seo réimse breise le gach foirm. Ainmnítear <code class=\"docutils literal notranslate\">ORDER</code> ar an réimse nua seo agus is <code class=\"docutils literal notranslate\">Forms.IntegerField</code> é. Maidir leis na foirmeacha a tháinig ó na sonraí tosaigh sé luach uimhriúil dóibh go huathoibríoch. Breathnaímid ar cad a tharlóidh nuair a athraíonn an t-úsáideoir na luachanna seo:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-TOTAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;3&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-INITIAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #1&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2008-05-10&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-ORDER&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #2&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2008-05-11&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-ORDER&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-2-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #3&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-2-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2008-05-01&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-2-ORDER&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    data<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    initial<span class=\"o\">=</span><span class=\"p\">[</span>\n<span class=\"gp\">... </span>        <span class=\"p\">{</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">:</span> datetime<span class=\"o\">.</span>date<span class=\"p\">(</span><span class=\"mi\">2008</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">)},</span>\n<span class=\"gp\">... </span>        <span class=\"p\">{</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">:</span> datetime<span class=\"o\">.</span>date<span class=\"p\">(</span><span class=\"mi\">2008</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">11</span><span class=\"p\">)},</span>\n<span class=\"gp\">... </span>    <span class=\"p\">],</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> form <span class=\"ow\">in</span> formset<span class=\"o\">.</span>ordered_forms<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>form<span class=\"o\">.</span>cleaned_data<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">{&#39;title&#39;: &#39;Article #3&#39;, &#39;pub_date&#39;: datetime.date(2008, 5, 1), &#39;ORDER&#39;: 0}</span>\n<span class=\"go\">{&#39;title&#39;: &#39;Article #2&#39;, &#39;pub_date&#39;: datetime.date(2008, 5, 11), &#39;ORDER&#39;: 1}</span>\n<span class=\"go\">{&#39;title&#39;: &#39;Article #1&#39;, &#39;pub_date&#39;: datetime.date(2008, 5, 10), &#39;ORDER&#39;: 2}</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#django.forms.formsets.BaseFormSet\" title=\"django.forms.formsets.BaseFormSet\"><code class=\"xref py py-class docutils literal notranslate\">BaseFormSet</code></a> also provides an\n<a class=\"reference internal\" href=\"#django.forms.formsets.BaseFormSet.ordering_widget\" title=\"django.forms.formsets.BaseFormSet.ordering_widget\"><code class=\"xref py py-attr docutils literal notranslate\">ordering_widget</code></a> attribute and\n<a class=\"reference internal\" href=\"#django.forms.formsets.BaseFormSet.get_ordering_widget\" title=\"django.forms.formsets.BaseFormSet.get_ordering_widget\"><code class=\"xref py py-meth docutils literal notranslate\">get_ordering_widget()</code></a> method that\ncontrol the widget used with\n<a class=\"reference internal\" href=\"#django.forms.formsets.BaseFormSet.can_order\" title=\"django.forms.formsets.BaseFormSet.can_order\"><code class=\"xref py py-attr docutils literal notranslate\">can_order</code></a>.</p>\n<section id=\"ordering-widget\">\n<h4><code class=\"docutils literal notranslate\">ording_widget</code><a class=\"heading-anchor\" href=\"#ordering-widget\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.ordering_widget\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">ordering_widget</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.ordering_widget\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Réamhshocraithe: :class: ~django.forms.numberInput</p>\n<p>Socraigh <code class=\"docutils literal notranslate\">ordering_widget</code> chun an rang giuirléid atá le húsáid le <code class=\"docutils literal notranslate\">can_order</code> a shonrú:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> BaseFormSet<span class=\"p\">,</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">BaseArticleFormSet</span><span class=\"p\">(</span>BaseFormSet<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    ordering_widget <span class=\"o\">=</span> HiddenInput\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    ArticleForm<span class=\"p\">,</span> formset<span class=\"o\">=</span>BaseArticleFormSet<span class=\"p\">,</span> can_order<span class=\"o\">=</span><span class=\"kc\">True</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"get-ordering-widget\">\n<h4><code class=\"docutils literal notranslate\">faigh_ording_widget</code><a class=\"heading-anchor\" href=\"#get-ordering-widget\"><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.forms.formsets.BaseFormSet.get_ordering_widget\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">get_ordering_widget</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.get_ordering_widget\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Athraigh <code class=\"docutils literal notranslate\">get_ordering_widget () ``más gá duit sampla giuirléid a sholáthar le húsáid le ``can_order</code>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> BaseFormSet<span class=\"p\">,</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">BaseArticleFormSet</span><span class=\"p\">(</span>BaseFormSet<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">def</span> <span class=\"nf\">get_ordering_widget</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>        <span class=\"k\">return</span> HiddenInput<span class=\"p\">(</span>attrs<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;class&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;ordering&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    ArticleForm<span class=\"p\">,</span> formset<span class=\"o\">=</span>BaseArticleFormSet<span class=\"p\">,</span> can_order<span class=\"o\">=</span><span class=\"kc\">True</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"can-delete\">\n<h3><code class=\"docutils literal notranslate\">`is féidir _scriosa</code><a class=\"heading-anchor\" href=\"#can-delete\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.can_delete\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">can_delete</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.can_delete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Réamhshocraithe: <code class=\"docutils literal notranslate\">Fréag</code></p>\n<p>Ligeann duit tacar foirme a chruthú leis an gcumas foirmeacha a roghnú le scriosadh:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">,</span> can_delete<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    initial<span class=\"o\">=</span><span class=\"p\">[</span>\n<span class=\"gp\">... </span>        <span class=\"p\">{</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">:</span> datetime<span class=\"o\">.</span>date<span class=\"p\">(</span><span class=\"mi\">2008</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">)},</span>\n<span class=\"gp\">... </span>        <span class=\"p\">{</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">:</span> datetime<span class=\"o\">.</span>date<span class=\"p\">(</span><span class=\"mi\">2008</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">11</span><span class=\"p\">)},</span>\n<span class=\"gp\">... </span>    <span class=\"p\">]</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> form <span class=\"ow\">in</span> formset<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>form<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-title&quot; value=&quot;Article #1&quot; id=&quot;id_form-0-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-pub_date&quot; value=&quot;2008-05-10&quot; id=&quot;id_form-0-pub_date&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-DELETE&quot;&gt;Delete:&lt;/label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;form-0-DELETE&quot; id=&quot;id_form-0-DELETE&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-1-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-1-title&quot; value=&quot;Article #2&quot; id=&quot;id_form-1-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-1-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-1-pub_date&quot; value=&quot;2008-05-11&quot; id=&quot;id_form-1-pub_date&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-1-DELETE&quot;&gt;Delete:&lt;/label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;form-1-DELETE&quot; id=&quot;id_form-1-DELETE&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-2-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-2-title&quot; id=&quot;id_form-2-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-2-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-2-pub_date&quot; id=&quot;id_form-2-pub_date&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-2-DELETE&quot;&gt;Delete:&lt;/label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;form-2-DELETE&quot; id=&quot;id_form-2-DELETE&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>Cosúil le <code class=\"docutils literal notranslate\">can_order</code> cuireann sé seo réimse nua le gach foirm darb ainm <code class=\"docutils literal notranslate\">DELETE</code> agus is <code class=\"docutils literal notranslate\">Forms.BooleanField</code> é. Nuair a thagann sonraí trí aon cheann de na réimsí scriosta a mharcáil is féidir leat rochtain a fháil orthu le deleted_forms`:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-TOTAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;3&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-INITIAL_FORMS&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #1&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2008-05-10&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-0-DELETE&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;on&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #2&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2008-05-11&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-1-DELETE&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-2-title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-2-pub_date&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;form-2-DELETE&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    data<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    initial<span class=\"o\">=</span><span class=\"p\">[</span>\n<span class=\"gp\">... </span>        <span class=\"p\">{</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">:</span> datetime<span class=\"o\">.</span>date<span class=\"p\">(</span><span class=\"mi\">2008</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">)},</span>\n<span class=\"gp\">... </span>        <span class=\"p\">{</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Article #2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">:</span> datetime<span class=\"o\">.</span>date<span class=\"p\">(</span><span class=\"mi\">2008</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">11</span><span class=\"p\">)},</span>\n<span class=\"gp\">... </span>    <span class=\"p\">],</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"p\">[</span>form<span class=\"o\">.</span>cleaned_data <span class=\"k\">for</span> form <span class=\"ow\">in</span> formset<span class=\"o\">.</span>deleted_forms<span class=\"p\">]</span>\n<span class=\"go\">[{&#39;title&#39;: &#39;Article #1&#39;, &#39;pub_date&#39;: datetime.date(2008, 5, 10), &#39;DELETE&#39;: True}]</span>\n</code></pre></div>\n<p>Má tá a: class: ModelFormSet &lt;django.forms.models.BaseModelFormSet&gt;`á úsáid agat, scriosfar cásanna samhail d'fhoirmeacha scriosta nuair a ghlaonn tú ar ``formset.save () `.</p>\n<p>If you call <code class=\"docutils literal notranslate\">formset.save(commit=False)</code>, objects will not be deleted\nautomatically. You'll need to call <code class=\"docutils literal notranslate\">delete()</code> on each of the\n<a class=\"reference internal\" href=\"/ga/6.1/topics/forms/modelforms/#django.forms.models.BaseModelFormSet.deleted_objects\" title=\"django.forms.models.BaseModelFormSet.deleted_objects\"><code class=\"xref py py-attr docutils literal notranslate\">formset.deleted_objects</code></a> to actually delete\nthem:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>instances <span class=\"o\">=</span> formset<span class=\"o\">.</span>save<span class=\"p\">(</span>commit<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> obj <span class=\"ow\">in</span> formset<span class=\"o\">.</span>deleted_objects<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    obj<span class=\"o\">.</span>delete<span class=\"p\">()</span>\n<span class=\"gp\">...</span>\n</code></pre></div>\n<p>Ar an láimh eile, má tá simplí <code class=\"docutils literal notranslate\">formSet ``á úsáid agat, is fútsa atá sé `formset.deleted_forms</code> a láimhseáil, b'fhéidir i modh save ()` do fhoirmset, mar níl aon smaoineamh ginearálta ann faoi cad a chiallaíonn sé foirm a scriosadh.</p>\n<p><a class=\"reference internal\" href=\"#django.forms.formsets.BaseFormSet\" title=\"django.forms.formsets.BaseFormSet\"><code class=\"xref py py-class docutils literal notranslate\">BaseFormSet</code></a> also provides a\n<a class=\"reference internal\" href=\"#django.forms.formsets.BaseFormSet.deletion_widget\" title=\"django.forms.formsets.BaseFormSet.deletion_widget\"><code class=\"xref py py-attr docutils literal notranslate\">deletion_widget</code></a> attribute and\n<a class=\"reference internal\" href=\"#django.forms.formsets.BaseFormSet.get_deletion_widget\" title=\"django.forms.formsets.BaseFormSet.get_deletion_widget\"><code class=\"xref py py-meth docutils literal notranslate\">get_deletion_widget()</code></a> method that\ncontrol the widget used with\n<a class=\"reference internal\" href=\"#django.forms.formsets.BaseFormSet.can_delete\" title=\"django.forms.formsets.BaseFormSet.can_delete\"><code class=\"xref py py-attr docutils literal notranslate\">can_delete</code></a>.</p>\n<section id=\"deletion-widget\">\n<h4><code class=\"docutils literal notranslate\">scrios_widget</code><a class=\"heading-anchor\" href=\"#deletion-widget\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.deletion_widget\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">deletion_widget</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.deletion_widget\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Réamhshocraithe: :class: ~django.forms.checkboxInput</p>\n<p>Socraigh <code class=\"docutils literal notranslate\">deletion_widget</code> chun an rang giuirléid atá le húsáid le <code class=\"docutils literal notranslate\">can_delete</code> a shonrú:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> BaseFormSet<span class=\"p\">,</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">BaseArticleFormSet</span><span class=\"p\">(</span>BaseFormSet<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    deletion_widget <span class=\"o\">=</span> HiddenInput\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    ArticleForm<span class=\"p\">,</span> formset<span class=\"o\">=</span>BaseArticleFormSet<span class=\"p\">,</span> can_delete<span class=\"o\">=</span><span class=\"kc\">True</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"get-deletion-widget\">\n<h4><code class=\"docutils literal notranslate\">faigh_scrios_widget</code><a class=\"heading-anchor\" href=\"#get-deletion-widget\"><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.forms.formsets.BaseFormSet.get_deletion_widget\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">get_deletion_widget</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.get_deletion_widget\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Athraigh <code class=\"docutils literal notranslate\">get_deletion_widget () ``más gá duit sampla giuirléid a sholáthar le húsáid le ``can_delete</code>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> BaseFormSet<span class=\"p\">,</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">BaseArticleFormSet</span><span class=\"p\">(</span>BaseFormSet<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">def</span> <span class=\"nf\">get_deletion_widget</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>        <span class=\"k\">return</span> HiddenInput<span class=\"p\">(</span>attrs<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;class&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;deletion&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    ArticleForm<span class=\"p\">,</span> formset<span class=\"o\">=</span>BaseArticleFormSet<span class=\"p\">,</span> can_delete<span class=\"o\">=</span><span class=\"kc\">True</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"can-delete-extra\">\n<h3><code class=\"docutils literal notranslate\">`is féidir _scrios_breise</code><a class=\"heading-anchor\" href=\"#can-delete-extra\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.can_delete_extra\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">can_delete_extra</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.can_delete_extra\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Réamhshocraithe: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Fíor`</p>\n<p>Agus tú ag socrú <code class=\"docutils literal notranslate\">can_delete=True</code>, bainfear an rogha chun foirmeacha breise a scriosadh <code class=\"docutils literal notranslate\">can_delete_extra=false</code> a shonrú.</p>\n</section>\n</section>\n<section id=\"adding-additional-fields-to-a-formset\">\n<h2>Réimsí breise a chur le tacar foirmeacha<a class=\"heading-anchor\" href=\"#adding-additional-fields-to-a-formset\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Más gá duit réimsí breise a chur leis an tacar foirme is féidir é seo a chur i gcrích go héasca. Soláthraíonn an bunaicme foirmset modh <code class=\"docutils literal notranslate\">add_fields</code>. Is féidir leat an modh seo a shárú chun do réimsí féin a chur leis nó fiú réimsí réamhshocraithe/tréithe na réimsí ordaithe agus scriostha a athshainiú:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> BaseFormSet\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">BaseArticleFormSet</span><span class=\"p\">(</span>BaseFormSet<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">def</span> <span class=\"nf\">add_fields</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> form<span class=\"p\">,</span> index<span class=\"p\">):</span>\n<span class=\"gp\">... </span>        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>add_fields<span class=\"p\">(</span>form<span class=\"p\">,</span> index<span class=\"p\">)</span>\n<span class=\"gp\">... </span>        form<span class=\"o\">.</span>fields<span class=\"p\">[</span><span class=\"s2\">&quot;my_field&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">,</span> formset<span class=\"o\">=</span>BaseArticleFormSet<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> form <span class=\"ow\">in</span> formset<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>form<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-title&quot;&gt;Title:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-title&quot; id=&quot;id_form-0-title&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-pub_date&quot;&gt;Pub date:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-pub_date&quot; id=&quot;id_form-0-pub_date&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_form-0-my_field&quot;&gt;My field:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;form-0-my_field&quot; id=&quot;id_form-0-my_field&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"passing-custom-parameters-to-formset-forms\">\n<span id=\"custom-formset-form-kwargs\"></span><h2>Ag dul paraiméadair saincheaptha chuig foirmeacha<a class=\"heading-anchor\" href=\"#passing-custom-parameters-to-formset-forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Uaireanta glacann do rang foirme paraiméadair saincheaptha, cosúil le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>MyArticleForm <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>. Is féidir leat an paraiméadar seo a rith agus an tacar foirmeacha á gcur isteach agat:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> BaseFormSet\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">MyArticleForm</span><span class=\"p\">(</span>ArticleForm<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> user<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n<span class=\"gp\">... </span>        <span class=\"bp\">self</span><span class=\"o\">.</span>user <span class=\"o\">=</span> user\n<span class=\"gp\">... </span>        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>MyArticleForm<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>form_kwargs<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;user&quot;</span><span class=\"p\">:</span> request<span class=\"o\">.</span>user<span class=\"p\">})</span>\n</code></pre></div>\n<p>Féadfaidh an <code class=\"docutils literal notranslate\">form_kwargs</code> ag brath ar an gcás foirme shonrach freisin. Soláthraíonn an bunaicme formset modh <code class=\"docutils literal notranslate\">get_form_kwargs</code>. Tógann an modh argóint amháin - innéacs na foirme sa tacar foirme. Is é <code class=\"docutils literal notranslate\">None</code> an t-innéacs fao:ref: empty_form:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> BaseFormSet\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">BaseArticleFormSet</span><span class=\"p\">(</span>BaseFormSet<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">def</span> <span class=\"nf\">get_form_kwargs</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> index<span class=\"p\">):</span>\n<span class=\"gp\">... </span>        kwargs <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>get_form_kwargs<span class=\"p\">(</span>index<span class=\"p\">)</span>\n<span class=\"gp\">... </span>        kwargs<span class=\"p\">[</span><span class=\"s2\">&quot;custom_kwarg&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> index\n<span class=\"gp\">... </span>        <span class=\"k\">return</span> kwargs\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>MyArticleForm<span class=\"p\">,</span> formset<span class=\"o\">=</span>BaseArticleFormSet<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">()</span>\n</code></pre></div>\n</section>\n<section id=\"customizing-a-formset-s-prefix\">\n<span id=\"formset-prefix\"></span><h2>Réimír foirmshraith a shaincheapadh<a class=\"heading-anchor\" href=\"#customizing-a-formset-s-prefix\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Sa HTML rindreáilte, cuimsíonn foirmeacha réimír ar ainm gach réimse. De réir réamhshocraithe, is é <code class=\"docutils literal notranslate\">foirm</code> an réimír, ach is féidir é a shaincheapadh ag baint úsáide as argóint <code class=\"docutils literal notranslate\">prefix</code> an fhoirmshraith.</p>\n<p>Mar shampla, sa chás réamhshocraithe, b'fhéidir go bhfeicfidh tú:</p>\n<div class=\"code-block\" data-language=\"html\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Html</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=\"Html code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;id_form-0-title&quot;</span><span class=\"p\">&gt;</span>Title:<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">input</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;text&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;form-0-title&quot;</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_form-0-title&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Ach le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>ArticleFormSet (prefix='article') <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>éiríonn sé sin:</p>\n<div class=\"code-block\" data-language=\"html\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Html</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=\"Html code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;id_article-0-title&quot;</span><span class=\"p\">&gt;</span>Title:<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">input</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;text&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;article-0-title&quot;</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_article-0-title&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>&lt;multiple-formsets-in-view&gt;Tá sé seo úsáideach más mian leat: ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>úsáid níos mó ná tacar foirme amháin i radharc <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n</section>\n<section id=\"using-a-formset-in-views-and-templates\">\n<span id=\"formset-rendering\"></span><h2>Foirmshraith a úsáid i radhairc agus teimpléid<a class=\"heading-anchor\" href=\"#using-a-formset-in-views-and-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tá na tréithe agus na modhanna seo a leanas ag foirmeacha a bhaineann le rindreáil:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.renderer\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">renderer</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.renderer\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sonraíonn sé an: doc: renderer &lt;/ref/forms/renderers&gt; le húsáid don fhoirmshraith. Réamhshocraithe don rindeoir a shonraítear leis an socrú: setting: FORM_RENDER.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.template_name\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">template_name</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.template_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ainm an teimpléid a rinneadh má theilgtear an tacar foirme isteach i sreang, m.sh. trí <code class=\"docutils literal notranslate\">print (formset) ``nó i dteimpléad trí</code> {{formset}} <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>.</p>\n<p>De réir réamhshocraithe, maoin ag filleadh luach an renderer's:attr: ~django.forms.renderers.baserenderer.formset_template_name. Féadfaidh tú é a shocrú mar ainm teimpléad teaghrán d'fhonn é sin a shárú d'aicme foirmeacha áirithe.</p>\n<p>Úsáidfear an teimpléad seo chun foirm bhainistíochta an fhoirmeacha a léiriú, agus ansin gach foirm sa tacar foirme de réir an teimpléid atá sainmhínithe ag an bhfoirm 's:attr: ~django.forms.form.template_name.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.template_name_div\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">template_name_div</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.template_name_div\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ainm an teimpléid a úsáidtear agus tú ag glaoch: meth: .as_div. De réir réamhshocraithe is é seo <code class=\"docutils literal notranslate\">” django/forms/formsets/div.html “</code>. Déanann an teimpléad seo foirm bhainistíochta an fhoirm agus ansin gach foirm sa tacar foirme de réir an mhodh foirme's:meth: ~django.forms.form.as_div.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.template_name_p\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">template_name_p</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.template_name_p\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ainm an teimpléid a úsáidtear agus tú ag glaoch: meth: .as_p. De réir réamhshocraithe is é seo <code class=\"docutils literal notranslate\">” django/forms/formsets/p.html “</code>. Déanann an teimpléad seo foirm bhainistíochta an fhoirm agus ansin gach foirm sa tacar foirme de réir an mhodh foirme's:meth: ~django.forms.form.as_p.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.template_name_table\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">template_name_table</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.template_name_table\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ainm an teimpléid a úsáidtear agus tú ag glaoch: meth: .as_table. De réir réamhshocraithe is é seo <code class=\"docutils literal notranslate\">” django/forms/formsets/table.html “</code>. Déanann an teimpléad seo foirm bhainistíochta an fhoirm agus ansin gach foirm sa tacar foirme de réir an mhodh foirme's:meth: ~django.forms.form.as_table.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.template_name_ul\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">template_name_ul</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.template_name_ul\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ainm an teimpléid a úsáidtear agus tú ag glaoch: meth: .as_ul. De réir réamhshocraithe is é seo <code class=\"docutils literal notranslate\">” django/forms/formsets/ul.html “</code>. Déanann an teimpléad seo foirm bhainistíochta an fhoirm agus ansin gach foirm sa tacar foirme de réir an mhodh foirme's:meth: ~django.forms.form.as_ul.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.get_context\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">get_context</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.get_context\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tugann sé an comhthéacs ar ais chun tacar foirme a rindreáil i dteimpléad.</p>\n<p>Is é an comhthéacs atá ar fáil:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">formset</code>: An sampla den fhoirmset.</p></li>\n</ul>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.render\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">render</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">template_name<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">context<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">renderer<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.render\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tugtar <code class=\"docutils literal notranslate\">__str__</code> ar an modh rindreála chomh maith leis na modhanna: meth: .as_div, :meth: .as_p, :meth: .as_ul, agus:meth: .as_table. Tá na hargóintí go léir roghnach agus beidh siad réamhshocraithe:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">ainmne_teimpléad</code>: :attr: .template_ainm</p></li>\n<li><p><code class=\"docutils literal notranslate\">context</code>: Luach ar ais ag: meth: .get_context</p></li>\n<li><p><code class=\"docutils literal notranslate\">renderer</code>: Luach ar ais ar:attr: .renderer</p></li>\n</ul>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.as_div\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">as_div</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.as_div\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Déanann sé an tacar foirme leis an teimpléad:attr: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>.template_name_div.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.as_p\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">as_p</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.as_p\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Déanann sé an tacar foirme leis an teimpléad:attr: .template_name_p.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.as_table\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">as_table</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.as_table\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Déanann sé an tacar foirme leis an teimpléad:attr: .template_name_table.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.formsets.BaseFormSet.as_ul\">\n<span class=\"sig-prename descclassname\">BaseFormSet.</span><span class=\"sig-name descname\">as_ul</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.formsets.BaseFormSet.as_ul\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Déanann sé an tacar foirme leis an teimpléad:attr: .template_name_ul.</p>\n</dd></dl>\n\n<p>Níl sé an-difriúil le tacar foirme a úsáid taobh istigh de radharc ó rang rialta <code class=\"docutils literal notranslate\">Foirme</code> a úsáid. Is é an t-aon rud a theastaíonn uait a bheith ar an eolas faoi ná a chinntiú go n-úsáidtear an fhoirm bhainistíochta taobh istigh den teimpléad. Breathnaímid ar radharc samplach:</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=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"kn\">from</span> <span class=\"nn\">django.shortcuts</span> <span class=\"kn\">import</span> render\n<span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm\n\n\n<span class=\"k\">def</span> <span class=\"nf\">manage_articles</span><span class=\"p\">(</span>request<span class=\"p\">):</span>\n    ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">)</span>\n    <span class=\"k\">if</span> request<span class=\"o\">.</span>method <span class=\"o\">==</span> <span class=\"s2\">&quot;POST&quot;</span><span class=\"p\">:</span>\n        formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>request<span class=\"o\">.</span>POST<span class=\"p\">,</span> request<span class=\"o\">.</span>FILES<span class=\"p\">)</span>\n        <span class=\"k\">if</span> formset<span class=\"o\">.</span>is_valid<span class=\"p\">():</span>\n            <span class=\"c1\"># do something with the formset.cleaned_data</span>\n            <span class=\"k\">pass</span>\n    <span class=\"k\">else</span><span class=\"p\">:</span>\n        formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">()</span>\n    <span class=\"k\">return</span> render<span class=\"p\">(</span>request<span class=\"p\">,</span> <span class=\"s2\">&quot;manage_articles.html&quot;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;formset&quot;</span><span class=\"p\">:</span> formset<span class=\"p\">})</span>\n</code></pre></div>\n<p>D'fhéadfadh cuma seo a bheith ar an teimpléad manage_articles.html`:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</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=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">form</span> <span class=\"na\">method</span><span class=\"o\">=</span><span class=\"s\">&quot;post&quot;</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">formset.management_form</span> <span class=\"cp\">}}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">table</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">form</span> <span class=\"k\">in</span> <span class=\"nv\">formset</span> <span class=\"cp\">%}</span>\n        <span class=\"cp\">{{</span> <span class=\"nv\">form</span> <span class=\"cp\">}}</span>\n        <span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">table</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">form</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Mar sin féin tá aicearra beag ann don méid thuas trí ligean don fhoirmscar féin déileáil leis an bhfoirm bhainistíochta:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</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=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">form</span> <span class=\"na\">method</span><span class=\"o\">=</span><span class=\"s\">&quot;post&quot;</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">table</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{{</span> <span class=\"nv\">formset</span> <span class=\"cp\">}}</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">table</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">form</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Críochnaíonn an méid thuas ag glaoch ar an modh: meth: BaseFormSet.render ar an rang formset. Déanann sé seo an tacar foirme ag baint úsáide as an teimpléad a shonraítear leis an tréith: attr: ~BaseFormSet.Template_Name. Cosúil le foirmeacha, de réir réamhshocraithe déanfar an tacar foirme <code class=\"docutils literal notranslate\">as_div</code>, agus modhanna cúntóra eile <code class=\"docutils literal notranslate\">as_p</code>, as_ul`, agus <code class=\"docutils literal notranslate\">as_table</code> ar fáil. &lt;overriding-built-in-formset-templates&gt;Is féidir rindreáil an fhoirmshraith a shaincheapadh tríd an tréith <code class=\"docutils literal notranslate\">template_name</code> a shonrú, nó níos ginearálta trí:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>an teimpléad réamhshocraithe a shárú <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n<section id=\"manually-rendered-can-delete-and-can-order\">\n<span id=\"id4\"></span><h3>Rinneadh de láimh <code class=\"docutils literal notranslate\">can_delete</code> agus <code class=\"docutils literal notranslate\">can_order</code><a class=\"heading-anchor\" href=\"#manually-rendered-can-delete-and-can-order\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Má rindeann tú réimsí de láimh sa teimpléad, is féidir leat paraiméadar <code class=\"docutils literal notranslate\">can_delete</code> a rinneadh le <code class=\"docutils literal notranslate\">{{form.Delete}}</code>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</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=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">form</span> <span class=\"na\">method</span><span class=\"o\">=</span><span class=\"s\">&quot;post&quot;</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">formset.management_form</span> <span class=\"cp\">}}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">form</span> <span class=\"k\">in</span> <span class=\"nv\">formset</span> <span class=\"cp\">%}</span>\n        <span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n            <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">form.title</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n            <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">form.pub_date</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n            <span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">formset.can_delete</span> <span class=\"cp\">%}</span>\n                <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">form.DELETE</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n            <span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n        <span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">form</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Ar an gcaoi chéanna, má tá sé de chumas ag an bhfoirm ordú (<code class=\"docutils literal notranslate\">can_order=true</code>), is féidir é a rinneadh le <code class=\"docutils literal notranslate\">{{form.order}}</code>.</p>\n</section>\n<section id=\"using-more-than-one-formset-in-a-view\">\n<span id=\"multiple-formsets-in-view\"></span><h3>Ag baint úsáide as níos mó ná tacar foirme amháin i radharc<a class=\"heading-anchor\" href=\"#using-more-than-one-formset-in-a-view\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tá tú in ann níos mó ná tacar foirme amháin a úsáid i radharc más mian leat. Tá foirmeacha ar iasacht cuid mhaith dá iompar ó fhoirmeacha. Agus é sin ráite tá tú in ann <code class=\"docutils literal notranslate\">prefix</code> a úsáid chun ainmneacha réimse foirmeacha foirmeacha a bhfuil luach ar leith acu chun ligean níos mó ná tacar foirme amháin a sheoladh chuig amharc gan ainmneacha a chomhrac. Breathnaímid ar an gcaoi a bhféadfaí é seo a chur i gcrích:</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=\"nn\">django.forms</span> <span class=\"kn\">import</span> formset_factory\n<span class=\"kn\">from</span> <span class=\"nn\">django.shortcuts</span> <span class=\"kn\">import</span> render\n<span class=\"kn\">from</span> <span class=\"nn\">myapp.forms</span> <span class=\"kn\">import</span> ArticleForm<span class=\"p\">,</span> BookForm\n\n\n<span class=\"k\">def</span> <span class=\"nf\">manage_articles</span><span class=\"p\">(</span>request<span class=\"p\">):</span>\n    ArticleFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>ArticleForm<span class=\"p\">)</span>\n    BookFormSet <span class=\"o\">=</span> formset_factory<span class=\"p\">(</span>BookForm<span class=\"p\">)</span>\n    <span class=\"k\">if</span> request<span class=\"o\">.</span>method <span class=\"o\">==</span> <span class=\"s2\">&quot;POST&quot;</span><span class=\"p\">:</span>\n        article_formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>request<span class=\"o\">.</span>POST<span class=\"p\">,</span> request<span class=\"o\">.</span>FILES<span class=\"p\">,</span> prefix<span class=\"o\">=</span><span class=\"s2\">&quot;articles&quot;</span><span class=\"p\">)</span>\n        book_formset <span class=\"o\">=</span> BookFormSet<span class=\"p\">(</span>request<span class=\"o\">.</span>POST<span class=\"p\">,</span> request<span class=\"o\">.</span>FILES<span class=\"p\">,</span> prefix<span class=\"o\">=</span><span class=\"s2\">&quot;books&quot;</span><span class=\"p\">)</span>\n        <span class=\"k\">if</span> article_formset<span class=\"o\">.</span>is_valid<span class=\"p\">()</span> <span class=\"ow\">and</span> book_formset<span class=\"o\">.</span>is_valid<span class=\"p\">():</span>\n            <span class=\"c1\"># do something with the cleaned_data on the formsets.</span>\n            <span class=\"k\">pass</span>\n    <span class=\"k\">else</span><span class=\"p\">:</span>\n        article_formset <span class=\"o\">=</span> ArticleFormSet<span class=\"p\">(</span>prefix<span class=\"o\">=</span><span class=\"s2\">&quot;articles&quot;</span><span class=\"p\">)</span>\n        book_formset <span class=\"o\">=</span> BookFormSet<span class=\"p\">(</span>prefix<span class=\"o\">=</span><span class=\"s2\">&quot;books&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> render<span class=\"p\">(</span>\n        request<span class=\"p\">,</span>\n        <span class=\"s2\">&quot;manage_articles.html&quot;</span><span class=\"p\">,</span>\n        <span class=\"p\">{</span>\n            <span class=\"s2\">&quot;article_formset&quot;</span><span class=\"p\">:</span> article_formset<span class=\"p\">,</span>\n            <span class=\"s2\">&quot;book_formset&quot;</span><span class=\"p\">:</span> book_formset<span class=\"p\">,</span>\n        <span class=\"p\">},</span>\n    <span class=\"p\">)</span>\n</code></pre></div>\n<p>Ansin déanfá na foirmeacha a rinneadh mar is gnách. Tá sé tábhachtach a chur in iúl gur gá duit <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>prefix` a rith ar na cásanna POST agus neamh-POST araon ionas go ndéanfar é a léiriú agus a phróiseáil i gceart.</p>\n<p>Cuireann gach formset's:ref: réimír `in ionad an réimír réamh &lt;formset-prefix&gt;shocraithe ``foirm ``a chuirtear le tréithe HTML ``ainm` agus id` gach réimse.</p>\n</section>\n</section>","rootId":"formsets","toc":[{"title":"Sonraí tosaigh a úsáid le tacar foirme","anchor":"using-initial-data-with-a-formset","children":[]},{"title":"An líon uasta na bhfoirmeacha a theorannú","anchor":"limiting-the-maximum-number-of-forms","children":[]},{"title":"Uaslíon na bhfoirmeacha ionchasacha a theorannú","anchor":"limiting-the-maximum-number-of-instantiated-forms","children":[]},{"title":"Bailíochtú Formset","anchor":"formset-validation","children":[{"title":"An “Foirm Bainistíochta” a thuiscint","anchor":"understanding-the-managementform","children":[]},{"title":"comhaireann_foirme_iomlán agus comhaireann_foirme_tosaithe","anchor":"total-form-count-and-initial-form-count","children":[]},{"title":"foirme_folam","anchor":"empty-form","children":[]},{"title":"teachtaireachtaí earráid","anchor":"error-messages","children":[]},{"title":"Bailíochtú foirm saincheaptha","anchor":"custom-formset-validation","children":[]}]},{"title":"Líon na bhfoirmeacha i dtacar foirmeacha a bhailíochtú","anchor":"validating-the-number-of-forms-in-a-formset","children":[{"title":"bailite_max","anchor":"validate-max","children":[]},{"title":"bailate_min","anchor":"validate-min","children":[]}]},{"title":"Déileáil le foirmeacha a ordú agus a scriosadh","anchor":"dealing-with-ordering-and-deletion-of-forms","children":[{"title":"``Is féidir _ordú ``","anchor":"can-order","children":[{"title":"ording_widget","anchor":"ordering-widget","children":[]},{"title":"faigh_ording_widget","anchor":"get-ordering-widget","children":[]}]},{"title":"`is féidir _scriosa","anchor":"can-delete","children":[{"title":"scrios_widget","anchor":"deletion-widget","children":[]},{"title":"faigh_scrios_widget","anchor":"get-deletion-widget","children":[]}]},{"title":"`is féidir _scrios_breise","anchor":"can-delete-extra","children":[]}]},{"title":"Réimsí breise a chur le tacar foirmeacha","anchor":"adding-additional-fields-to-a-formset","children":[]},{"title":"Ag dul paraiméadair saincheaptha chuig foirmeacha","anchor":"passing-custom-parameters-to-formset-forms","children":[]},{"title":"Réimír foirmshraith a shaincheapadh","anchor":"customizing-a-formset-s-prefix","children":[]},{"title":"Foirmshraith a úsáid i radhairc agus teimpléid","anchor":"using-a-formset-in-views-and-templates","children":[{"title":"Rinneadh de láimh can_delete agus can_order","anchor":"manually-rendered-can-delete-and-can-order","children":[]},{"title":"Ag baint úsáide as níos mó ná tacar foirme amháin i radharc","anchor":"using-more-than-one-formset-in-a-view","children":[]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Using Django","url":"/ga/6.1/topics/"},{"docname":"topics/forms/index","title":"Ag obair le foirmeacha","url":"/ga/6.1/topics/forms/"}],"prev":{"docname":"topics/forms/index","title":"Ag obair le foirmeacha","url":"/ga/6.1/topics/forms/"},"next":{"docname":"topics/forms/modelforms","title":"Foirmeacha a chruthú ó shamhl","url":"/ga/6.1/topics/forms/modelforms/"},"formats":{"html":"/ga/6.1/topics/forms/formsets/","markdown":"/ga/6.1/topics/forms/formsets.md","json":"/ga/6.1/topics/forms/formsets.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/topics/forms/formsets.txt","official":"https://docs.djangoproject.com/ga/6.1/topics/forms/formsets/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}