{"title":"Conas réimsí samhail saincheaptha a chruthú","version":"6.1","locale":"ga","docname":"howto/custom-model-fields","url":"/ga/6.1/howto/custom-model-fields/","canonical":"https://djangodocs.dev/ga/6.1/howto/custom-model-fields/","summary":"Réamhrá Link to this heading # Míníonn an doiciméad:doc: tagairt samhail </topics/db/models> conas ranganna réimse caighdeánacha Django a úsáid --:class:…","html":"<h1>Conas réimsí samhail saincheaptha a chruthú<a class=\"heading-anchor\" href=\"#how-to-create-custom-model-fields\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"introduction\">\n<h2>Réamhrá<a class=\"heading-anchor\" href=\"#introduction\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Míníonn an doiciméad:doc: tagairt samhail &lt;/topics/db/models&gt; conas ranganna réimse caighdeánacha Django a úsáid --:class: ~django.db.models.charfield, :class: ~django.db.models.datefield, srl Chun go leor críocha, is iad na ranganna sin gach rud a theastaíonn uait. Uaireanta, áfach, ní chomhlíonfaidh an leagan Django do riachtanais bheachta, nó beidh tú ag iarraidh réimse a úsáid atá go hiomlán difriúil ó na cinn a sheoltar le Django.</p>\n<p>Ní chlúdaíonn cineálacha réimse ionsuite Django gach cineál colún bunachar sonraí féideartha - ach na cineálacha coitianta, mar shampla <code class=\"docutils literal notranslate\"><span class=\"pre\">VARCHAR</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">INTEGER</span></code>. Le haghaidh cineálacha colún níos doiléire, mar shampla polagóin gheografacha nó fiú cineálacha cruthaithe ag úsáideoir mar cineálacha saincheaptha PostgreSQL `_, is féidir leat do fho-aicmí ``Field` Django féin a shainiú.</p>\n<p>De rogha air sin, b'fhéidir go bhfuil réad casta Python agat is féidir a shraitheadh ar bhealach éigin chun oiriúnú i gcineál colún bunachar sonraí caighdeán Is cás eile é seo ina gcabhróidh fo-aicme <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Field` leat do réad a úsáid le do mhúnlaí.</p>\n<section id=\"our-example-object\">\n<h3>Ár réad samplach<a class=\"heading-anchor\" href=\"#our-example-object\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Creating custom fields requires a bit of attention to detail. To make things\neasier to follow, we'll use a consistent example throughout this document:\nwrapping a Python object representing the deal of cards in a hand of <a class=\"reference external\" href=\"https://en.wikipedia.org/wiki/Contract_bridge\">Bridge</a>.\nDon't worry, you don't have to know how to play Bridge to follow this example.\nYou only need to know that 52 cards are dealt out equally to four players, who\nare traditionally called <em>north</em>, <em>east</em>, <em>south</em> and <em>west</em>. Our class looks\nsomething like this:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Hand</span><span class=\"p\">:</span>\n<span class=\"w\">    </span><span class=\"sd\">&quot;&quot;&quot;A hand of cards (bridge style)&quot;&quot;&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">north</span><span class=\"p\">,</span> <span class=\"n\">east</span><span class=\"p\">,</span> <span class=\"n\">south</span><span class=\"p\">,</span> <span class=\"n\">west</span><span class=\"p\">):</span>\n        <span class=\"c1\"># Input parameters are lists of cards (&#39;Ah&#39;, &#39;9s&#39;, etc.)</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">north</span> <span class=\"o\">=</span> <span class=\"n\">north</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">east</span> <span class=\"o\">=</span> <span class=\"n\">east</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">south</span> <span class=\"o\">=</span> <span class=\"n\">south</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">west</span> <span class=\"o\">=</span> <span class=\"n\">west</span>\n\n    <span class=\"c1\"># ... (other possibly useful methods omitted) ...</span>\n</code></pre></div>\n<p>Is gnáth-rang Python é seo, gan aon rud Django-sonrach faoi. Ba mhaith linn a bheith in ann rudaí mar seo a dhéanamh inár samhlacha (glacaimid leis gur sampla de <code class=\"docutils literal notranslate\"><span class=\"pre\">Hand</span></code> é an tréith láimh ar an tsamhail):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">example</span> <span class=\"o\">=</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">pk</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">example</span><span class=\"o\">.</span><span class=\"n\">hand</span><span class=\"o\">.</span><span class=\"n\">north</span><span class=\"p\">)</span>\n\n<span class=\"n\">new_hand</span> <span class=\"o\">=</span> <span class=\"n\">Hand</span><span class=\"p\">(</span><span class=\"n\">north</span><span class=\"p\">,</span> <span class=\"n\">east</span><span class=\"p\">,</span> <span class=\"n\">south</span><span class=\"p\">,</span> <span class=\"n\">west</span><span class=\"p\">)</span>\n<span class=\"n\">example</span><span class=\"o\">.</span><span class=\"n\">hand</span> <span class=\"o\">=</span> <span class=\"n\">new_hand</span>\n<span class=\"n\">example</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Sannaímid agus aisghabháil uaidh an tréith <code class=\"docutils literal notranslate\"><span class=\"pre\">hand</span></code> inár samhail díreach cosúil le haon rang Python eile. Is é an cleas ná insint le Django conas rud den sórt sin a shábháil agus a luchtú a láimhseáil.</p>\n<p>D'fhonn an rang <code class=\"docutils literal notranslate\"><span class=\"pre\">Hand</span></code> a úsáid inár samhlacha, ní gá dúinn** an rang seo a athrú ar chor ar bith. Tá sé seo oiriúnach, mar ciallaíonn sé gur féidir leat tacaíocht mhúnla a scríobh go héasca do ranganna atá ann cheana nach féidir leat an cód foinse a athrú.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>B'fhéidir nach mbeadh tú ag iarraidh leas a bhaint as cineálacha colún bunachar sonraí saincheaptha agus déileáil leis na sonraí mar chineálacha caighdeánacha Python i do mhúnlaí; teaghráin, nó snámha, mar shampla. Tá an cás seo cosúil lenár sampla <code class=\"docutils literal notranslate\"><span class=\"pre\">Hand</span></code> agus tabharfaimid faoi deara aon difríochtaí agus muid ag dul ar aghaidh.</p>\n</aside>\n</section>\n</section>\n<section id=\"background-theory\">\n<h2>Teoiric chúlra<a class=\"heading-anchor\" href=\"#background-theory\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"database-storage\">\n<h3>Stóráil bunachar sonraí<a class=\"heading-anchor\" href=\"#database-storage\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tosaímid le réimsí samhail. Má bhriseann tú síos é, soláthraíonn réimse samhail bealach chun gnáthrud Python a thógáil - string, boolean, datetime`, nó rud éigin níos casta cosúil le Hand` - agus é a thiontú go formáid atá úsáideach agus tú ag déileáil leis an mbunachar sonraí. (Tá formáid den sórt sin úsáideach freisin le haghaidh sraitheadh, ach mar a fheicfimid níos déanaí, tá sé sin níos éasca nuair a bheidh an taobh bunachar sonraí faoi smacht agat).</p>\n<p>Caithfear réimsí i samhail a thiontú ar bhealach éigin chun oiriúnú i gcineál colún bunachar sonraí atá ann Soláthraíonn bunachair sonraí éagsúla tacair éagsúla de chineálacha bailí colún, ach tá an riail fós mar an gcéanna: is iad sin na cineálacha amháin a chaithfidh tú oibriú leo. Caithfidh aon rud is mian leat a stóráil sa bhunachar sonraí a bheith oiriúnach i gceann de na cineálacha sin.</p>\n<p>De ghnáth, tá réimse Django á scríobh agat chun cineál colún bunachar sonraí áirithe a mheaitseáil, nó beidh bealach ag teastáil uait chun do chuid sonraí a thiontú go, abair, sreang.</p>\n<p>Maidir lenár sampla <code class=\"docutils literal notranslate\"><span class=\"pre\">Hand</span></code>, d'fhéadfaimis sonraí na gcárta a thiontú go sreang de 104 carachtar trí na cártaí go léir a chomhcheangal le chéile in ord réamhshocraithe - abair, na cártaí*thuaidh* go léir ar dtús, ansin na cártaí*thoir*, <em>theas</em> agus <em>iarth</em>. Mar sin is féidir rudaí <code class=\"docutils literal notranslate\"><span class=\"pre\">Hand</span></code> a shábháil i gcolúin téacs nó carachtair sa bhunachar sonraí.</p>\n</section>\n<section id=\"what-does-a-field-class-do\">\n<h3>Cad a dhéanann rang allamuigh?<a class=\"heading-anchor\" href=\"#what-does-a-field-class-do\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is fo-aicmí: Django.db.Models.Field iad réimsí uile Django (agus nuair a deirimid <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">*</span></a>réimsí * sa doiciméad seo, ciallaíonn muid i gcónaí réimsí samhlacha agus ní: doc: réimsí foirme). &lt;/ref/forms/fields&gt; Tá an chuid is mó den fhaisnéis a thaifeadann Django faoi réimse coitianta do gach réimse - ainm, téacs cabhrach, uathúlacht agus mar sin de. Láimhseálann <code class=\"docutils literal notranslate\"><span class=\"pre\">Field`</span> <span class=\"pre\">an</span> <span class=\"pre\">fhaisnéis</span> <span class=\"pre\">sin</span> <span class=\"pre\">go</span> <span class=\"pre\">léir</span> <span class=\"pre\">a</span> <span class=\"pre\">stóráil.</span> <span class=\"pre\">Téimid</span> <span class=\"pre\">isteach</span> <span class=\"pre\">sna</span> <span class=\"pre\">sonraí</span> <span class=\"pre\">beachta</span> <span class=\"pre\">faoi</span> <span class=\"pre\">na</span> <span class=\"pre\">rudaí</span> <span class=\"pre\">is</span> <span class=\"pre\">féidir</span> <span class=\"pre\">le</span> <span class=\"pre\">``Field`</span> <span class=\"pre\">a</span> <span class=\"pre\">dhéanamh</span> <span class=\"pre\">níos</span> <span class=\"pre\">déanaí;</span> <span class=\"pre\">go</span> <span class=\"pre\">dtí</span> <span class=\"pre\">seo,</span> <span class=\"pre\">is</span> <span class=\"pre\">leor</span> <span class=\"pre\">a</span> <span class=\"pre\">rá</span> <span class=\"pre\">go</span> <span class=\"pre\">dtagann</span> <span class=\"pre\">gach</span> <span class=\"pre\">rud</span> <span class=\"pre\">as</span> <span class=\"pre\">``Field</span></code> agus ansin saincheapann sé príomhphíosaí d'iompar an ranga.</p>\n<p>Tá sé tábhachtach a thuiscint nach é rang réimse Django an rud a stóráiltear i do thréithe samhail. Tá gnáth-rudaí Python sna tréithe samhail. Stóráiltear na ranganna allamuigh a shainmhíníonn tú i samhail i ndáiríre sa rang <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Meta` nuair a chruthaítear an rang samhail (níl na sonraí beachta faoi conas a dhéantar é seo gan tábhacht anseo). Tá sé seo toisc nach bhfuil na ranganna allamuigh riachtanach nuair nach bhfuil tú ach tréithe a chruthú agus a mhodhnú. Ina áit sin, soláthraíonn siad an t-innealra chun tiontú idir luach na tréithe agus an méid a stóráiltear sa bhunachar sonraí nó a sheoltar chuig:doc: &lt;/topics/serialization&gt; serializer.</p>\n<p>Coinnigh é seo i gcuimhne agus tú ag cruthú do réimsí saincheaptha féin. Soláthraíonn fo-aicme “Field” Django a scríobhann tú an t-innealra chun tiontú idir do chásanna Python agus na luachanna bunachar sonraí/serializer ar bhealaí éagsúla (tá difríochtaí idir luach a stóráil agus luach a úsáid le haghaidh cuardaigh, mar shampla). Má tá sé seo rud beag deacair, ná bíodh imní ort - beidh sé níos soiléire sna samplaí thíos. Cuimhnigh go ndéanfaidh tú dhá rang a chruthú go minic nuair a theastaíonn réimse saincheaptha uait:</p>\n<ul class=\"simple\">\n<li><p>Is é an chéad rang an réad Python a ionramhfaidh d'úsáideoirí. Sannóidh siad é don tréith samhail, léifidh siad uaidh chun críocha a thaispeáint, rudaí mar sin. Seo an rang <code class=\"docutils literal notranslate\"><span class=\"pre\">Hand</span></code> inár sampla.</p></li>\n<li><p>Is é an dara rang an fo-aicme <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Field`. Is é seo an rang a bhfuil a fhios aige conas do chéad rang a thiontú anall agus anall idir a fhoirm stórála buan agus an fhoirm Python.</p></li>\n</ul>\n</section>\n</section>\n<section id=\"writing-a-field-subclass\">\n<h2>Fo-aicme réimse a scríobh<a class=\"heading-anchor\" href=\"#writing-a-field-subclass\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Agus do fho-rang: Class: ~Django.db.Models.Field á phleanáil agat, smaoineamh ar dtús cén aicme: ~django.db.models.field atá ar do réimse nua is cosúil leis. An féidir leat réimse Django atá ann cheana a fho-aicmiú agus roinnt oibre a shábháil duit féin? Mura bhfuil, ba chóir duit an rang:class: ~Django.db.Models.Field a fho-aicmiú, as a bhfuil gach rud síos.</p>\n<p>Is ábhar do réimse nua a thionscnamh ná aon argóintí atá sonrach do chás a scaradh ó na hargóintí coitianta agus an dara ceann a chur chuig an modh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>__init__ () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>de:class: ~django.db.Models.field (nó do rang tuismitheora).</p>\n<p>Inár sampla, glaoimid ar ár réimse <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Handfield`. &lt;Something&gt;(Is smaoineamh maith é glaoch ar do: class: ~django.db.models.field fo-aicme <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>Field`, mar sin is féidir é a aithint go héasca mar a:class: ~Django.db.Models.Field fo-aicme.) Ní iompraíonn sé cosúil le haon réimse atá ann cheana, mar sin déanfaimid fo-aicme go díreach ó:class: ~django.db.models.field:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">HandField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"n\">description</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;A hand of cards (bridge style)&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;max_length&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"mi\">104</span>\n        <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><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Glacann ár “Handfield” leis an gcuid is mó de na roghanna caighdeánacha réimse (féach an liosta thíos), ach cinntímid go bhfuil fad seasta aige, ós rud é nach gá dó ach 52 luach cárta móide a gcuid culaith a shealbhú; 104 carachtar san iomlán.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Glacann go leor de réimsí samhlacha Django le roghanna nach ndéanann siad aon rud leo. Mar shampla, is féidir leat araon: attr: ~django.db.models.field.editable agus:attr: ~django.db.models.datefield.auto_now a rith chuig a:class: Django.db.Models.DateField agus déanfaidh sé neamhaird ar pharaiméadar: attr: ~django.db.models.field.editable (:attr: ~django.db.models.datefield.auto_now atá socraithe le tuiscint <code class=\"docutils literal notranslate\"><span class=\"pre\">Editable=False</span></code>). Ní ardaítear aon earráid sa chás seo.</p>\n<p>Déanann an t-iompar seo na ranganna allamuigh a shimpliú, toisc nach gá dóibh seiceáil le haghaidh roghanna nach bhfuil riachtanach. Cuireann siad na roghanna go léir chuig an rang tuismitheoirí agus ansin ní úsáideann siad iad níos déanaí. Is fútsa atá sé cibé an dteastaíonn uait go mbeadh do réimsí níos déine faoi na roghanna a roghnaíonn siad, nó iompar níos ceadaithe na réimsí reatha a úsáid.</p>\n</aside>\n<p>An <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Réimse. Glacann modh __init__ () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>na paraiméadair seo a leanas:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.verbose_name\" title=\"django.db.models.Field.verbose_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">verbose_name</span></code></a></p></li>\n<li><p><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>ainm `</p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.primary_key\" title=\"django.db.models.Field.primary_key\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">primary_key</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.CharField.max_length\" title=\"django.db.models.CharField.max_length\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">max_length</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.unique\" title=\"django.db.models.Field.unique\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">unique</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">blank</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.null\" title=\"django.db.models.Field.null\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">null</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.db_index\" title=\"django.db.models.Field.db_index\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">db_index</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">rel</span></code>: Úsáidtear le haghaidh réimsí gaolmhara (cosúil:class: ForeignKey). Le haghaidh ardúsáide amháin.</p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.default\" title=\"django.db.models.Field.default\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">default</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.editable\" title=\"django.db.models.Field.editable\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">editable</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">serialize</span></code>: Má tá <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, ní shraitheofar an réimse nuair a chuirtear an tsamhail chuig Django's:doc: serializers &lt;/topics/serialization&gt;. Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.unique_for_date\" title=\"django.db.models.Field.unique_for_date\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">unique_for_date</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.unique_for_month\" title=\"django.db.models.Field.unique_for_month\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">unique_for_month</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.unique_for_year\" title=\"django.db.models.Field.unique_for_year\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">unique_for_year</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.choices\" title=\"django.db.models.Field.choices\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">choices</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.help_text\" title=\"django.db.models.Field.help_text\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">help_text</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.db_column\" title=\"django.db.models.Field.db_column\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">db_column</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.db_tablespace\" title=\"django.db.models.Field.db_tablespace\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">db_tablespace</span></code></a>: Le haghaidh cruthú innéacs amháin, má thacaíonn an t-inneall le :doc: tablespaces &lt;/topics/db/tablespaces&gt;. Is féidir leat neamhaird a dhéanamh de ghnáth ar an rogha seo.</p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.auto_created\" title=\"django.db.models.Field.auto_created\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">auto_created</span></code></a>: <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> if the field was\nautomatically created, as for the <a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.OneToOneField\" title=\"django.db.models.OneToOneField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">OneToOneField</span></code></a>\nused by model inheritance. For advanced use only.</p></li>\n</ul>\n<p>Tá an bhrí chéanna ag na roghanna go léir gan míniú ar an liosta thuas a dhéanann siad do ghnáth-réimsí Django. Féach an <a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/\"><span class=\"doc\">doiciméadú páirce</span></a> le haghaidh samplaí agus sonraí.</p>\n<section id=\"field-deconstruction\">\n<span id=\"custom-field-deconstruct-method\"></span><h3>Dífhoirmiú allamuigh<a class=\"heading-anchor\" href=\"#field-deconstruction\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is é an contrárphointe le do mhodh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>__init__ () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a scríobh ná an modh:meth: ~.field.deconstruct a scríobh. Úsáidtear é le linn: doc: imirce samhail chun a insint le Django conas sampla de do réimse &lt;/topics/migrations&gt; nua a thógáil agus é a laghdú go foirm shraitheach - go háirithe, cad iad na hargóintí atá le dul chuig <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>__init__ () <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>chun é a athchruthú.</p>\n<p>Mura gcuir tú aon roghanna breise leis ar bharr an réimse a d'oidhreacht uaidh, ansin ní gá modh nua <code class=\"docutils literal notranslate\"><span class=\"pre\">deconstruct</span> <span class=\"pre\">()</span> <span class=\"pre\">`a</span> <span class=\"pre\">scríobh.</span> <span class=\"pre\">Má</span> <span class=\"pre\">tá</span> <span class=\"pre\">tú</span> <span class=\"pre\">ag</span> <span class=\"pre\">athrú,</span> <span class=\"pre\">áfach,</span> <span class=\"pre\">na</span> <span class=\"pre\">hargóintí</span> <span class=\"pre\">a</span> <span class=\"pre\">rith</span> <span class=\"pre\">in</span> <span class=\"pre\">``__init__</span> <span class=\"pre\">()</span> <span class=\"pre\">``(mar</span> <span class=\"pre\">atá</span> <span class=\"pre\">muid</span> <span class=\"pre\">i</span> <span class=\"pre\">`Handfield</span></code>), beidh ort na luachanna atá á rith a fhorlíonadh.</p>\n<p>Tugann <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>deconstruct () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>cúpla de cheithre mhír ar ais: ainm tréith an réimse, cosán iomlán iompórtála an aicme réimse, na hargóintí suímh (mar liosta), agus na hargóintí eochairfhocal (mar dhic). Tabhair faoi deara go bhfuil sé seo difriúil ón modh <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>deconstruct () <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>: ref: <a href=\"#id9\"><span class=\"problematic\" id=\"id10\">`</span></a>d'aicmí saincheaptha &lt;custom-deconstruct-method&gt;`a thugann tuple de thrí rud ar ais.</p>\n<p>Mar údar réimse saincheaptha, ní gá duit aire a thabhairt faoin gcéad dá luach; tá an cód go léir ag an mbonn rang <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Field` chun ainm tréith agus cosán allmhairithe an réimse a oibriú amach. Caithfidh tú, áfach, aire a thabhairt faoi na hargóintí seasaimh agus eochairfhocal, mar is dócha gurb iad seo na rudaí atá á athrú agat.</p>\n<p>Mar shampla, inár rang <code class=\"docutils literal notranslate\"><span class=\"pre\">Handfield</span></code> táimid i gcónaí ag socrú go foréigeantach max_length in <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>__init__ () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>. Feicfidh an modh deconstruct () ``ar an rang bonn ``Field é seo agus déanfaidh sé iarracht é a thabhairt ar ais sna hargóintí eochairfhocal; dá bhrí sin, is féidir linn é a scaoileadh ó na hargóintí eochairfhocal le haghaidh inléiteachta:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">HandField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;max_length&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"mi\">104</span>\n        <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><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">deconstruct</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"n\">name</span><span class=\"p\">,</span> <span class=\"n\">path</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"n\">kwargs</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">deconstruct</span><span class=\"p\">()</span>\n        <span class=\"k\">del</span> <span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;max_length&quot;</span><span class=\"p\">]</span>\n        <span class=\"k\">return</span> <span class=\"n\">name</span><span class=\"p\">,</span> <span class=\"n\">path</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"n\">kwargs</span>\n</code></pre></div>\n<p>Má chuireann tú argóint eochairfhocal nua leis, ní mór duit cód a scríobh i deconstruct () ``a chuireann a luach isteach i `kwargs` tú féin. Ba chóir duit an luach ó <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>kwargs <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a fhágáil freisin nuair nach gá staid an réimse a athchóiriú, mar shampla nuair a bhíonn an luach réamhshocraithe á n-úsáid:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CommaSepField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"s2\">&quot;Implements comma-separated storage of lists&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">separator</span><span class=\"o\">=</span><span class=\"s2\">&quot;,&quot;</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">separator</span> <span class=\"o\">=</span> <span class=\"n\">separator</span>\n        <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><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">deconstruct</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"n\">name</span><span class=\"p\">,</span> <span class=\"n\">path</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"n\">kwargs</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">deconstruct</span><span class=\"p\">()</span>\n        <span class=\"c1\"># Only include kwarg if it&#39;s not the default</span>\n        <span class=\"k\">if</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">separator</span> <span class=\"o\">!=</span> <span class=\"s2\">&quot;,&quot;</span><span class=\"p\">:</span>\n            <span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;separator&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">separator</span>\n        <span class=\"k\">return</span> <span class=\"n\">name</span><span class=\"p\">,</span> <span class=\"n\">path</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"n\">kwargs</span>\n</code></pre></div>\n<p>Tá samplaí níos casta thar raon feidhme an doiciméad seo, ach cuimhnigh - le haghaidh aon chumraíocht de do shampla Réimse, ní mór <code class=\"docutils literal notranslate\"><span class=\"pre\">deconstruct</span> <span class=\"pre\">()</span> <span class=\"pre\">``argóintí</span> <span class=\"pre\">a</span> <span class=\"pre\">thabhairt</span> <span class=\"pre\">ar</span> <span class=\"pre\">ais</span> <span class=\"pre\">ar</span> <span class=\"pre\">féidir</span> <span class=\"pre\">leat</span> <span class=\"pre\">a</span> <span class=\"pre\">chur</span> <span class=\"pre\">chuig</span> <span class=\"pre\">``__init__</span></code> chun an stát sin a athchóiriú.</p>\n<p>Tabhair aird bhreise má shocraíonn tú luachanna réamhshocraithe nua d'argóintí sa sáraicme <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Field`; ba mhaith leat a chinntiú go bhfuil siad san áireamh i gcónaí, seachas imeacht má ghlacann siad leis an seanluach réamhshocraithe.</p>\n<p>Ina theannta sin, déan iarracht luachanna a thabhairt ar ais mar argóintí seasaimh a sheachaint; nuair is féidir, cuir luachanna ar ais mar argóintí eochairfhocal chun Má athraíonn tú ainmneacha rudaí níos minice ná a seasamh i liosta argóintí an tógálaí, b'fhéidir gur fearr leat suíomh, ach coinnigh i gcuimhne go mbeidh daoine ag athtógáil do réimse ón leagan sraitheach ar feadh tamaill go leor (blianta b'fhéidir), ag brath ar fad a bheidh do imirce.</p>\n<p>Is féidir leat torthaí an dífhoirmithe a fheiceáil trí imirce a chuimsíonn an réimse a chuimsíonn, agus is féidir leat dífhoirmiú a thástáil i dtástálacha aonaid tríd an réimse a dhífhoirmiú agus a athchóiriú:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">name</span><span class=\"p\">,</span> <span class=\"n\">path</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"n\">kwargs</span> <span class=\"o\">=</span> <span class=\"n\">my_field_instance</span><span class=\"o\">.</span><span class=\"n\">deconstruct</span><span class=\"p\">()</span>\n<span class=\"n\">new_instance</span> <span class=\"o\">=</span> <span class=\"n\">MyField</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n<span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">assertEqual</span><span class=\"p\">(</span><span class=\"n\">my_field_instance</span><span class=\"o\">.</span><span class=\"n\">some_attribute</span><span class=\"p\">,</span> <span class=\"n\">new_instance</span><span class=\"o\">.</span><span class=\"n\">some_attribute</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"field-attributes-not-affecting-database-column-definition\">\n<span id=\"custom-field-non-db-attrs\"></span><h3>Tréithe réimse nach mbíonn tionchar ag sainmhíniú<a class=\"heading-anchor\" href=\"#field-attributes-not-affecting-database-column-definition\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is féidir leat <code class=\"docutils literal notranslate\"><span class=\"pre\">Field.non_DB_Attrs</span></code> a shárú chun tréithe réimse a shaincheapadh nach mbíonn tionchar acu ar shainmhíniú colún. Úsáidtear é le linn imirce samhail chun oibríochtaí gan aon Alterfield a bhrath.</p>\n<p>Mar shampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CommaSepField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"nd\">@property</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">non_db_attrs</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">non_db_attrs</span> <span class=\"o\">+</span> <span class=\"p\">(</span><span class=\"s2\">&quot;separator&quot;</span><span class=\"p\">,)</span>\n</code></pre></div>\n</section>\n<section id=\"changing-a-custom-field-s-base-class\">\n<h3>Athrú bunaicme réimse saincheaptha<a class=\"heading-anchor\" href=\"#changing-a-custom-field-s-base-class\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ní féidir leat bunaicme réimse saincheaptha a athrú toisc nach mbraithfidh Django an t-athrú agus ní dhéanfaidh sé imirce dó. Mar shampla, má thosaíonn tú le:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CustomCharField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>agus ansin cinneadh go dteastaíonn uait <code class=\"docutils literal notranslate\"><span class=\"pre\">TextField</span></code> a úsáid ina ionad, ní féidir leat an fo-rang a athrú mar seo:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CustomCharField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">TextField</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>Ina áit sin, ní mór duit rang réimse saincheaptha nua a chruthú agus do mhúnlaí a nuashonrú chun tagairt a dhéanamh dó:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CustomCharField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CustomTextField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">TextField</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>Mar a pléadh in:ref: réimsí a bhaint &lt;migrations-removing-model-fields&gt;, ní mór duit an rang bunaidh CustomCharfield a choinneáil chomh fada agus a bhíonn imirceanna agat a thagann tagairt dó.</p>\n</section>\n<section id=\"documenting-your-custom-field\">\n<h3>Do réimse saincheaptha a dhoiciméadú<a class=\"heading-anchor\" href=\"#documenting-your-custom-field\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Mar is gnách, ba cheart duit do chineál réimse a dhoiciméadú, ionas go mbeidh a fhios ag úsáideoirí cad é. Chomh maith le docstring a sholáthar dó, atá úsáideach d'fhorbróirí, is féidir leat ligean d'úsáideoirí an aip riaracháin cur síos gairid ar an gcineál réimse a fheiceáil tríd an bhfeidhmchlár: doc: django.contrib.admin&lt;/ref/contrib/admin/admindocs&gt; docs. Chun seo a dhéanamh soláthraíonn téacs tuairisciúil in a:attr: ~field.description tréith aicme do réimse saincheaptha. Sa sampla thuas, is é 'Lámh cártaí (stíl droichead) 'an cur síos a thaispeánann an t-iarratas <code class=\"docutils literal notranslate\"><span class=\"pre\">admindocs`</span> <span class=\"pre\">ar</span> <span class=\"pre\">``lámha</span> <span class=\"pre\">láimhse</span></code>.</p>\n<p>Sa taispeán:mod: django.contrib.admindocs, tá cur síos ar an réimse idirphóilte le <code class=\"docutils literal notranslate\"><span class=\"pre\">réimse.</span> <span class=\"pre\">__dict__</span></code> a ligeann don tuairisc argóintí an réimse a ionchorprú. Mar shampla, is é an cur síos dag:class: ~django.db.models.charfield:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">description</span> <span class=\"o\">=</span> <span class=\"n\">_</span><span class=\"p\">(</span><span class=\"s2\">&quot;String (up to </span><span class=\"si\">%(max_length)s</span><span class=\"s2\">)&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"useful-methods\">\n<h3>Modhanna úsáideacha<a class=\"heading-anchor\" href=\"#useful-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Nuair a bheidh do fho-aicme: Class: ~Django.db.Models.Field cruthaithe agat, b'fhéidir go smaoinfidh tú ar chúpla modh caighdeánach a shárú, ag brath ar iompar do réimse. Tá an liosta modhanna thíos in ord tábhachtachta thart ar laghdú, mar sin tosaigh ón mbarr.</p>\n<section id=\"custom-database-types\">\n<span id=\"id1\"></span><h4>Cineálacha sonraí saincheaptha<a class=\"heading-anchor\" href=\"#custom-database-types\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Abair gur chruthaigh tú cineál saincheaptha PostgreSQL ar a dtugtar <code class=\"docutils literal notranslate\"><span class=\"pre\">mytype</span></code>. Is féidir leat fo-aicme <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> agus an modh:meth: ~field.db_type a chur i bhfeidhm, mar sin:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MytypeField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">db_type</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;mytype&quot;</span>\n</code></pre></div>\n<p>Nuair a bheidh MyTypeField agat, is féidir leat é a úsáid in aon mhúnla, díreach cosúil le haon chineál <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Field` eile:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">80</span><span class=\"p\">)</span>\n    <span class=\"n\">something_else</span> <span class=\"o\">=</span> <span class=\"n\">MytypeField</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Má tá sé mar aidhm agat feidhmchlár agnasach bunachar sonraí a thógáil, ba cheart duit cuntas a thabhairt ar dhifríochtaí i gcineálacha colún bunachar sonraí. Mar shampla, tugtar timestamp ``ar an gcineál colún dáta/ama i PostgreSQL, agus tugtar `datetime` ar an gcolún céanna i MySQL. Is féidir leat é seo a láimhseáil i modh a:meth: ~field.db_type tríd an tréith <code class=\"docutils literal notranslate\"><span class=\"pre\">connection.vendor</span></code> a sheiceáil. Is iad na hainmneacha díoltóra ionsuite atá ann faoi láthair ná: sqlite`, postgresql`, <code class=\"docutils literal notranslate\"><span class=\"pre\">mysql</span></code>, agus <code class=\"docutils literal notranslate\"><span class=\"pre\">oracle</span></code>.</p>\n<p>Mar shampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyDateField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">db_type</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">):</span>\n        <span class=\"k\">if</span> <span class=\"n\">connection</span><span class=\"o\">.</span><span class=\"n\">vendor</span> <span class=\"o\">==</span> <span class=\"s2\">&quot;mysql&quot;</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"s2\">&quot;datetime&quot;</span>\n        <span class=\"k\">else</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"s2\">&quot;timestamp&quot;</span>\n</code></pre></div>\n<p>Glaonn Django ar na modhanna: Meth: ~Field.DB_TYPE agus:meth: ~Field.rel_DB_TYPE nuair a thógann an creat na ráitis <code class=\"docutils literal notranslate\"><span class=\"pre\">CREATE</span> <span class=\"pre\">TABLE</span></code> d'iarratas - is é sin, nuair a chruthaíonn tú do tháblaí den chéad uair. Tugtar ar na modhanna freisin agus clásal <code class=\"docutils literal notranslate\"><span class=\"pre\">WHERE</span></code> á thógáil lena n-áirítear an réimse samhail - is é sin, nuair a aisghabhann tú sonraí ag baint úsáide as modhanna QuerySet mar <code class=\"docutils literal notranslate\"><span class=\"pre\">get</span> <span class=\"pre\">()</span> <span class=\"pre\">``,</span> <span class=\"pre\">``filter</span> <span class=\"pre\">()</span></code>, agus <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a><a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>eisiamh () <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>agus bíonn an réimse samhail mar argóint.</p>\n<p>Some database column types accept parameters, such as <code class=\"docutils literal notranslate\"><span class=\"pre\">CHAR(25)</span></code>, where the\nparameter <code class=\"docutils literal notranslate\"><span class=\"pre\">25</span></code> represents the maximum column length. In cases like these,\nit's more flexible if the parameter is specified in the model rather than being\nhardcoded in the <code class=\"docutils literal notranslate\"><span class=\"pre\">db_type()</span></code> method. For example, it wouldn't make much sense\nto have a <code class=\"docutils literal notranslate\"><span class=\"pre\">CharMaxlength25Field</span></code>, shown here:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># This is a silly example of hardcoded parameters.</span>\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CharMaxlength25Field</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">db_type</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;char(25)&quot;</span>\n\n\n<span class=\"c1\"># In the model:</span>\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModel</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"n\">my_field</span> <span class=\"o\">=</span> <span class=\"n\">CharMaxlength25Field</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Is é an bealach níos fearr chun é seo a dhéanamh ná an paraiméadar a dhéanamh inshonraithe ag am reatha - ie, nuair a bhíonn an rang ag teacht isteach. Chun sin a dhéanamh, cuir Réimse i bhfeidhm. __init__ () `, mar sin:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># This is a much more flexible example.</span>\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">BetterCharField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">max_length</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">max_length</span> <span class=\"o\">=</span> <span class=\"n\">max_length</span>\n        <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><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">db_type</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;char(</span><span class=\"si\">%s</span><span class=\"s2\">)&quot;</span> <span class=\"o\">%</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">max_length</span>\n\n\n<span class=\"c1\"># In the model:</span>\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModel</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"n\">my_field</span> <span class=\"o\">=</span> <span class=\"n\">BetterCharField</span><span class=\"p\">(</span><span class=\"mi\">25</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Faoi dheireadh, má éilíonn do cholún socrú SQL fíor-chasta, filleadh <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> ó: meth: .db_type. Cuirfidh sé seo faoi deara go scipeálfaidh cód cruthaithe SQL Django thar an réimse seo. Tá tú freagrach ansin as an colún a chruthú sa tábla ceart ar bhealach éigin eile, ach tugann sé seo bealach duit chun a rá le Django dul amach as an mbealach.</p>\n<p>Glaonn an modh: Meth: ~Field.rel_DB_Type trí réimsí mar <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">OneTooneField</span></code> a thugann pointe chuig réimse eile chun a gcineálacha sonraí colún bunachar sonraí a chinneadh. Mar shampla, má tá <code class=\"docutils literal notranslate\"><span class=\"pre\">UnsignedaUtofield</span></code> agat, teastaíonn na heochracha eachtracha uait a chuireann in iúl chuig an réimse sin chun an cineál sonraí céanna a úsáid:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># MySQL unsigned integer (range 0 to 4294967295).</span>\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">UnsignedAutoField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">AutoField</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">db_type</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;integer UNSIGNED AUTO_INCREMENT&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">rel_db_type</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;integer UNSIGNED&quot;</span>\n</code></pre></div>\n</section>\n<section id=\"converting-values-to-python-objects\">\n<span id=\"id2\"></span><h4>Luachanna a thiontú go rudaí Python<a class=\"heading-anchor\" href=\"#converting-values-to-python-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Má dhéileálann do rang saincheap:class: ~Field le struchtúir sonraí atá níos casta ná teaghráin, dátaí, sláimhreacha nó snámha, ansin b'fhéidir go mbeidh ort athraithe:meth: ~field.from_db_value agus:meth: ~field.to_python.</p>\n<p>Má tá sé i láthair don fho-aicme réimse, glaofar <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>from_db_value () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>i ngach imthosca nuair a luchtaítear na sonraí ón mbunachar sonraí, lena n-áirítear i gcomhiomlánacha agus:meth: ~django.db.models.query.queryset.values glaonna.</p>\n<p>Tugtar <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>to_python () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>trí dhísheirialú agus le linn an modh:meth: ~django.db.models.model.clean a úsáidtear ó fhoirmeacha.</p>\n<p>Mar riail ghinearálta, ba cheart go ndéanfadh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>to_python () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>déileáil go grásta le haon cheann de na hargóintí seo a leanas:</p>\n<ul class=\"simple\">\n<li><p>Sampla den chineál ceart (m.sh., Lám` inár sampla leanúnach).</p></li>\n<li><p>A shreang</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> (má cheadaíonn an réimse <code class=\"docutils literal notranslate\"><span class=\"pre\">Null=True</span></code>)</p></li>\n</ul>\n<p>Inár rang <code class=\"docutils literal notranslate\"><span class=\"pre\">Handfield</span></code>, táimid ag stóráil na sonraí mar réimse <code class=\"docutils literal notranslate\"><span class=\"pre\">VARCHAR</span></code> sa bhunachar sonraí, mar sin ní mór dúinn a bheith in ann teaghráin agus <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> a phróiseáil sa <code class=\"docutils literal notranslate\"><span class=\"pre\">from_db_value</span> <span class=\"pre\">()</span> <span class=\"pre\">``.</span> <span class=\"pre\">I</span> <span class=\"pre\">``to_python</span> <span class=\"pre\">()</span> <span class=\"pre\">``,</span> <span class=\"pre\">ní</span> <span class=\"pre\">mór</span> <span class=\"pre\">dúinn</span> <span class=\"pre\">cásanna</span> <span class=\"pre\">``Hand</span></code> a láimhseáil freisin:</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\">import</span><span class=\"w\"> </span><span class=\"nn\">re</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.exceptions</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ValidationError</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.translation</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">gettext_lazy</span> <span class=\"k\">as</span> <span class=\"n\">_</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">parse_hand</span><span class=\"p\">(</span><span class=\"n\">hand_string</span><span class=\"p\">):</span>\n<span class=\"w\">    </span><span class=\"sd\">&quot;&quot;&quot;Takes a string of cards and splits into a full hand.&quot;&quot;&quot;</span>\n    <span class=\"n\">p1</span> <span class=\"o\">=</span> <span class=\"n\">re</span><span class=\"o\">.</span><span class=\"n\">compile</span><span class=\"p\">(</span><span class=\"s2\">&quot;.</span><span class=\"si\">{26}</span><span class=\"s2\">&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">p2</span> <span class=\"o\">=</span> <span class=\"n\">re</span><span class=\"o\">.</span><span class=\"n\">compile</span><span class=\"p\">(</span><span class=\"s2\">&quot;..&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">args</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">p2</span><span class=\"o\">.</span><span class=\"n\">findall</span><span class=\"p\">(</span><span class=\"n\">x</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">x</span> <span class=\"ow\">in</span> <span class=\"n\">p1</span><span class=\"o\">.</span><span class=\"n\">findall</span><span class=\"p\">(</span><span class=\"n\">hand_string</span><span class=\"p\">)]</span>\n    <span class=\"k\">if</span> <span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"n\">args</span><span class=\"p\">)</span> <span class=\"o\">!=</span> <span class=\"mi\">4</span><span class=\"p\">:</span>\n        <span class=\"k\">raise</span> <span class=\"n\">ValidationError</span><span class=\"p\">(</span><span class=\"n\">_</span><span class=\"p\">(</span><span class=\"s2\">&quot;Invalid input for a Hand instance&quot;</span><span class=\"p\">))</span>\n    <span class=\"k\">return</span> <span class=\"n\">Hand</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">HandField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">from_db_value</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">,</span> <span class=\"n\">expression</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">):</span>\n        <span class=\"k\">if</span> <span class=\"n\">value</span> <span class=\"ow\">is</span> <span class=\"kc\">None</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"n\">value</span>\n        <span class=\"k\">return</span> <span class=\"n\">parse_hand</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">to_python</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">):</span>\n        <span class=\"k\">if</span> <span class=\"nb\">isinstance</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">,</span> <span class=\"n\">Hand</span><span class=\"p\">):</span>\n            <span class=\"k\">return</span> <span class=\"n\">value</span>\n\n        <span class=\"k\">if</span> <span class=\"n\">value</span> <span class=\"ow\">is</span> <span class=\"kc\">None</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"n\">value</span>\n\n        <span class=\"k\">return</span> <span class=\"n\">parse_hand</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Tabhair faoi deara go gcuirimid sampla <code class=\"docutils literal notranslate\"><span class=\"pre\">Hand</span></code> ar ais i gcónaí ó na modhanna seo. Sin an cineál réada Python ba mhaith linn a stóráil i dtréith an tsamhail.</p>\n<p>Maidir le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>to_python () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>, má théann aon rud mícheart le linn tiontaithe luacha, ba cheart duit eisceacht a:exc: ~Django.Core.Exceptions.ValidationError a ardú.</p>\n</section>\n<section id=\"converting-python-objects-to-query-values\">\n<span id=\"id3\"></span><h4>Rudaí Python a thiontú go luachanna ceisteanna<a class=\"heading-anchor\" href=\"#converting-python-objects-to-query-values\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Ós rud é go n-éilíonn tiontú ar bhonn sonraí a úsáid ar an dá bhealach, má théann tú róth:meth: ~field.from_db_value caithfidh tú ró-ride:meth: ~field.get_prep_value chun rudaí Python a thiontú ar ais go luachanna fiosrúcháin.</p>\n<p>Mar shampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">HandField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_prep_value</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;&quot;</span><span class=\"o\">.</span><span class=\"n\">join</span><span class=\"p\">(</span>\n            <span class=\"p\">[</span><span class=\"s2\">&quot;&quot;</span><span class=\"o\">.</span><span class=\"n\">join</span><span class=\"p\">(</span><span class=\"n\">l</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">l</span> <span class=\"ow\">in</span> <span class=\"p\">(</span><span class=\"n\">value</span><span class=\"o\">.</span><span class=\"n\">north</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"o\">.</span><span class=\"n\">east</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"o\">.</span><span class=\"n\">south</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"o\">.</span><span class=\"n\">west</span><span class=\"p\">)]</span>\n        <span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Warning</p>\n<p>Má úsáideann do réimse saincheaptha na cineálacha <code class=\"docutils literal notranslate\"><span class=\"pre\">CHAR</span></code>, VARCHAR` nó <code class=\"docutils literal notranslate\"><span class=\"pre\">TEXT</span></code> do MySQL, ní mór duit a chinntiú go bhfillfidh: meth: .get_prep_value cineál teaghrán i gcónaí. Déanann MySQL meaitseáil sholúbtha agus gan choinne nuair a dhéantar fiosrúchán ar na cineálacha seo agus is sláimhir é an luach a chuirtear ar fáil, rud a d'fhéadfadh a bheith ina gcúis le ceisteanna rudaí gan choinne a Ní féidir leis an bhfadhb seo tarlú má thugann tú cineál teaghrán ar ais i gcónaí ó:meth: .get_prep_value.</p>\n</aside>\n</section>\n<section id=\"converting-query-values-to-database-values\">\n<span id=\"id4\"></span><h4>Luachanna ceist a thiontú go luachanna bunachar<a class=\"heading-anchor\" href=\"#converting-query-values-to-database-values\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Caithfidh roinnt cineálacha sonraí (mar shampla, dátaí) a bheith i bhformáid shonrach sula bhféadfaidh cúltaca bunachar sonraí iad a úsáid. :meth: ~Field.get_DB_Prep_Value is é an modh inar chóir na tiontaithe sin a dhéanamh. Cuirtear an nasc sonrach a úsáidfear don cheist ar aghaidh mar pharaiméadar <code class=\"docutils literal notranslate\"><span class=\"pre\">nasc</span></code>. Ligeann sé seo duit loighic chomhshó cúltaca a úsáid má tá sé ag teastáil.</p>\n<p>Mar shampla, úsáideann Django an modh seo a leanas dá: aicme: BinaryField:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_db_prep_value</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">,</span> <span class=\"n\">prepared</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">):</span>\n    <span class=\"n\">value</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_db_prep_value</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">,</span> <span class=\"n\">prepared</span><span class=\"p\">)</span>\n    <span class=\"k\">if</span> <span class=\"n\">value</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span><span class=\"p\">:</span>\n        <span class=\"k\">return</span> <span class=\"n\">connection</span><span class=\"o\">.</span><span class=\"n\">Database</span><span class=\"o\">.</span><span class=\"n\">Binary</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">value</span>\n</code></pre></div>\n<p>Sa chás go dteastaíonn tiontú speisialta ag teastáil ó do réimse saincheaptha agus é a shábháil nach bhfuil mar an gcéanna leis an gcomhshó a úsáidtear le haghaidh gnáthpharaiméadair fiosrúcháin, is féidir leat athraithe:meth: ~field.get_db_prep_save.</p>\n</section>\n<section id=\"preprocessing-values-before-saving\">\n<span id=\"id5\"></span><h4>Luachanna réamhphróiseála sula sábháil<a class=\"heading-anchor\" href=\"#preprocessing-values-before-saving\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Más mian leat an luach a réamhphróiseáil díreach sula sábhálann tú, is féidir leat: meth: ~field.pre_save a úsáid. Mar shampla, úsáideann Django's:Class: ~Django.db.Models.DateTimeField an modh seo chun an tréith a shocrú i gceart sa chás de:attr: ~django.db.models.dateField.auto_now nó:attr: ~Django.db.Models.DateField.Auto_Now_Add.</p>\n<p>Má dhéanann tú an modh seo a shárú, ní mór duit luach na tréithe a thabhairt ar ais ag an deireadh. Ba cheart duit tréith an tsamhail a nuashonrú freisin má dhéanann tú aon athruithe ar an luach ionas go bhfeicfidh cód ina bhfuil tagairtí don tsamhail an luach ceart i gcónaí.</p>\n</section>\n<section id=\"specifying-the-form-field-for-a-model-field\">\n<span id=\"specifying-form-field-for-model-field\"></span><h4>An réimse foirme do réimse samhail a shonrú<a class=\"heading-anchor\" href=\"#specifying-the-form-field-for-a-model-field\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Chun an réimse foirme a úsáideann:: class: ~django.forms.ModelForm a shaincheapadh, is féidir leat: meth: ~Field.FormField a shárú.</p>\n<p>Is féidir an rang réimse foirme a shonrú trí na hargóintí <code class=\"docutils literal notranslate\"><span class=\"pre\">form_class</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">roghnaí_form_class</span></code>; úsáidtear an dara ceann má tá roghanna sonraithe sa réimse, an chéad cheann eile a shlí eile. Mura gcuirtear na hargóintí seo ar fáil, úsáidfear :class: ~django.forms.charfield nó:class: ~django.forms.typedChoiceField.</p>\n<p>Seoltar an foclóir <code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code> ar fad díreach chuig modh <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__()</span></code> réimse na foirme. De ghnáth, níl le déanamh ach réamhshocrú maith a shocrú don argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">form_class</span></code> (agus b'fhéidir <code class=\"docutils literal notranslate\"><span class=\"pre\">choices_form_class</span></code>) agus ansin láimhseáil bhreise a tharmligean chuig an rang tuismitheora. D’fhéadfadh go n-éileodh sé seo leat réimse foirme saincheaptha (agus fiú giuirléid foirme) a scríobh. Féach an <a class=\"reference internal\" href=\"/ga/6.1/topics/forms/\"><span class=\"doc\">doiciméid foirmeacha</span></a> le haghaidh faisnéise faoi seo.</p>\n<p>If you wish to exclude the field from the <a class=\"reference internal\" href=\"/ga/6.1/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code></a>, you\ncan override the <a class=\"reference internal\" href=\"/ga/6.1/ref/models/fields/#django.db.models.Field.formfield\" title=\"django.db.models.Field.formfield\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">formfield()</span></code></a> method to return <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p>\n<p>Ag leanúint lenár sampla leanúnach, is féidir linn an modh: meth: ~field.formField a scríobh mar:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">HandField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">formfield</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"c1\"># Exclude the field from the ModelForm when some condition is met.</span>\n        <span class=\"n\">some_condition</span> <span class=\"o\">=</span> <span class=\"n\">kwargs</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;some_condition&quot;</span><span class=\"p\">,</span> <span class=\"kc\">False</span><span class=\"p\">)</span>\n        <span class=\"k\">if</span> <span class=\"n\">some_condition</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"kc\">None</span>\n\n        <span class=\"c1\"># Set up some defaults while letting the caller override them.</span>\n        <span class=\"n\">defaults</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;form_class&quot;</span><span class=\"p\">:</span> <span class=\"n\">MyFormField</span><span class=\"p\">}</span>\n        <span class=\"n\">defaults</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">formfield</span><span class=\"p\">(</span><span class=\"o\">**</span><span class=\"n\">defaults</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Glacann sé seo leis go bhfuil aicme réimse <code class=\"docutils literal notranslate\"><span class=\"pre\">MyFormField</span></code> iompórtáilte againn (a bhfuil a ghiuirléid réamhshocraithe féin aige). Ní chlúdaíonn an doiciméad seo na sonraí maidir le réimsí foirme saincheaptha a scríobh.</p>\n</section>\n<section id=\"emulating-built-in-field-types\">\n<span id=\"id6\"></span><h4>Cineálacha réimse ionsuite a aithris<a class=\"heading-anchor\" href=\"#emulating-built-in-field-types\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Má chruthaigh tú modh a:meth: .db_type, ní gá duit a bheith buartha fao:meth: .get_internal_type - ní úsáidfear mórán é. Uaireanta, áfach, bíonn do stóráil bunachar sonraí cosúil le cineál réimse éigin eile, ionas gur féidir leat loighic réimse eile sin a úsáid chun an colún ceart a chruthú.</p>\n<p>Mar shampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">HandField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_internal_type</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;CharField&quot;</span>\n</code></pre></div>\n<p>Is cuma cén cúltaca bunachar sonraí atá á úsáid againn, ciallóidh sé seo go gcruthaíonn: djadmin: migrate agus orduithe SQL eile an cineál colún ceart chun sreang a stóráil.</p>\n<p>If: Meth: .get_internal_type filleann sreang nach bhfuil ar eolas ag Django don chúltaca bunachar sonraí atá á úsáid agat - is é sin, níl sé le feiceáil i <code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.backends.</span> <span class=\"pre\">&lt;db_name&gt;.base.databaseWrapper.Data_Types</span></code> -- úsáidfidh an serializer an sreang fós, ach cuirfidh an modh réamhshocraithe: meth: ~Field.db_type ar ais <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>. Féach an doiciméadú de:meth: ~field.db_type ar chúiseanna a d'fhéadfadh sé seo a bheith úsáideach. Is smaoineamh úsáideach é teaghrán tuairisciúil a chur isteach mar chineál an réimse don serializer má tá tú riamh ag baint úsáide as an aschur serializer in áit éigin eile, lasmuigh de Django.</p>\n</section>\n<section id=\"converting-field-data-for-serialization\">\n<span id=\"converting-model-field-to-serialization\"></span><h4>Sonraí réimse a thiontú le haghaidh sraitheadh<a class=\"heading-anchor\" href=\"#converting-field-data-for-serialization\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Chun an chaoi a ndéantar na luachanna a shraitheadh ag serializer a shaincheapadh, is féidir leat: meth: ~field.value_to_string a shárú. Úsáid:Meth: ~ Field.value_from_Object is é an bealach is fearr chun luach an réimse a fháil roimh shraitheadh. Mar shampla, ós rud é go n-úsáideann Handfield teaghráin lena stóráil sonraí ar aon nós, is féidir linn roinnt cód tiontaithe atá ann cheana a athúsáid:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">HandField</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Field</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">value_to_string</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n        <span class=\"n\">value</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">value_from_object</span><span class=\"p\">(</span><span class=\"n\">obj</span><span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_prep_value</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"some-general-advice\">\n<h3>Roinnt comhairle ginearálta<a class=\"heading-anchor\" href=\"#some-general-advice\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is próiseas deacair is féidir le réimse saincheaptha a scríobh, go háirithe má tá tiontaithe casta á dhéanamh agat idir do chineálacha Python agus do bhunachar sonraí agus formáidí sraitheach. Seo cúpla leid chun rudaí a dhéanamh níos réidh:</p>\n<ol class=\"arabic simple\">\n<li><p>Féach ar na réimsí Django atá ann cheana (in:source: django/db/models/fields/__init__.py) le haghaidh inspioráide. Déan iarracht réimse a fháil atá cosúil leis an méid atá uait agus é a leathnú beagán, in ionad réimse iomlán nua a chruthú ón tús.</p></li>\n<li><p>Cuir modh <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__</span> <span class=\"pre\">()</span> <span class=\"pre\">``ar</span> <span class=\"pre\">an</span> <span class=\"pre\">rang</span> <span class=\"pre\">atá</span> <span class=\"pre\">tú</span> <span class=\"pre\">ag</span> <span class=\"pre\">timfhilleadh</span> <span class=\"pre\">suas</span> <span class=\"pre\">mar</span> <span class=\"pre\">réimse.</span> <span class=\"pre\">Tá</span> <span class=\"pre\">go</span> <span class=\"pre\">leor</span> <span class=\"pre\">áiteanna</span> <span class=\"pre\">ann</span> <span class=\"pre\">ina</span> <span class=\"pre\">bhfuil</span> <span class=\"pre\">iompar</span> <span class=\"pre\">réamhshocraithe</span> <span class=\"pre\">an</span> <span class=\"pre\">chód</span> <span class=\"pre\">réimse</span> <span class=\"pre\">glaoch</span> <span class=\"pre\">ar</span> <span class=\"pre\">``str</span> <span class=\"pre\">()</span> <span class=\"pre\">``ar</span> <span class=\"pre\">an</span> <span class=\"pre\">luach.</span> <span class=\"pre\">(Sna</span> <span class=\"pre\">samplaí</span> <span class=\"pre\">atá</span> <span class=\"pre\">againn</span> <span class=\"pre\">sa</span> <span class=\"pre\">doiciméad</span> <span class=\"pre\">seo,</span> <span class=\"pre\">is</span> <span class=\"pre\">sampla</span> <span class=\"pre\">``Láimh</span></code> a bheadh luach `, Láimhe`, <code class=\"docutils literal notranslate\"><span class=\"pre\">Láimhe</span> <span class=\"pre\">``,</span> <span class=\"pre\">``Láimhse</span></code>). Mar sin má athraíonn do mhodh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>__str__ () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>go huathoibríoch go foirm teaghrán do réad Python, is féidir leat a lán oibre a shábháil duit féin.</p></li>\n</ol>\n</section>\n</section>\n<section id=\"writing-a-filefield-subclass\">\n<h2>Ag scríobh fo-aicme <code class=\"docutils literal notranslate\"><span class=\"pre\">Filefield</span></code><a class=\"heading-anchor\" href=\"#writing-a-filefield-subclass\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Chomh maith leis na modhanna thuas, tá cúpla riachtanas speisialta eile ag réimsí a dhéileálann le comhaid nach mór a chur san áireamh. Is féidir le formhór na meicnic a sholáthraíonn “Filefield”, amhail stóráil agus aisghabháil bunachar sonraí a rialú, fanacht gan athrú, ag fágáil fo-aicmí chun déileáil leis an dúshlán tacú le cineál áirithe comhad.</p>\n<p>Soláthraíonn Django aicme <code class=\"docutils literal notranslate\"><span class=\"pre\">Comhad</span> <span class=\"pre\">``,</span> <span class=\"pre\">a</span> <span class=\"pre\">úsáidtear</span> <span class=\"pre\">mar</span> <span class=\"pre\">sheachfhreastalaí</span> <span class=\"pre\">d'ábhar</span> <span class=\"pre\">agus</span> <span class=\"pre\">oibríochtaí</span> <span class=\"pre\">an</span> <span class=\"pre\">chomhaid.</span> <span class=\"pre\">Is</span> <span class=\"pre\">féidir</span> <span class=\"pre\">é</span> <span class=\"pre\">seo</span> <span class=\"pre\">a</span> <span class=\"pre\">fho-aicmiú</span> <span class=\"pre\">chun</span> <span class=\"pre\">an</span> <span class=\"pre\">chaoi</span> <span class=\"pre\">a</span> <span class=\"pre\">ndéantar</span> <span class=\"pre\">rochtain</span> <span class=\"pre\">ar</span> <span class=\"pre\">an</span> <span class=\"pre\">gcomhad</span> <span class=\"pre\">a</span> <span class=\"pre\">shaincheapadh,</span> <span class=\"pre\">agus</span> <span class=\"pre\">na</span> <span class=\"pre\">modhanna</span> <span class=\"pre\">atá</span> <span class=\"pre\">ar</span> <span class=\"pre\">fáil.</span> <span class=\"pre\">Tá</span> <span class=\"pre\">sé</span> <span class=\"pre\">ina</span> <span class=\"pre\">chónaí</span> <span class=\"pre\">ag</span> <span class=\"pre\">`django.db.models.fields.fil&lt;/ref/files/file&gt;</span> <span class=\"pre\">es</span></code>, agus mínítear a iompar réamhshocraithe in:doc: doiciméadú comhad.</p>\n<p>Nuair a chruthaítear fo-aicme de Comhad `, ní mór a rá don fho-aicme nua <code class=\"docutils literal notranslate\"><span class=\"pre\">FileField</span></code> é a úsáid. Chun é sin a dhéanamh, sannadh an fo-aicme nua <code class=\"docutils literal notranslate\"><span class=\"pre\">File</span></code> don tréith speisialta <code class=\"docutils literal notranslate\"><span class=\"pre\">`attr_class</span></code> den fho-aicme <code class=\"docutils literal notranslate\"><span class=\"pre\">FileField</span></code>.</p>\n<section id=\"a-few-suggestions\">\n<h3>Cúpla moladh<a class=\"heading-anchor\" href=\"#a-few-suggestions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Chomh maith leis na sonraí thuas, tá cúpla treoirlínte ann ar féidir leo éifeachtúlacht agus inléiteacht chód an réimse a fheabhsú go mór.</p>\n<ol class=\"arabic simple\">\n<li><p>Is sampla iontach é an fhoinse do ImageField` féin Django (in:source: django/db/models/fields/files.py) de conas fo-aicme <code class=\"docutils literal notranslate\"><span class=\"pre\">Filefield</span></code> chun tacú le cineál áirithe comhad, mar go n-ionchorpraíonn sé na teicnící go léir a thuairiscítear thuas.</p></li>\n<li><p>Tréithe comhaid taisce nuair is féidir. Ós rud é go bhféadfar comhaid a stóráil i gcórais stórála iargúlta, d'fhéadfadh go gcosnóidh siad am breise, nó fiú airgead, ní gá é sin i gcónaí. Nuair a aisghabtar comhad chun roinnt sonraí faoina ábhar a fháil, taisce an oiread de na sonraí sin agus is féidir chun an líon uaireanta caithfear an comhad a aisghabháil ar ghlaonna ina dhiaidh sin ar an bhfaisnéis sin a laghdú.</p></li>\n</ol>\n</section>\n</section>","rootId":"how-to-create-custom-model-fields","toc":[{"title":"Réamhrá","anchor":"introduction","children":[{"title":"Ár réad samplach","anchor":"our-example-object","children":[]}]},{"title":"Teoiric chúlra","anchor":"background-theory","children":[{"title":"Stóráil bunachar sonraí","anchor":"database-storage","children":[]},{"title":"Cad a dhéanann rang allamuigh?","anchor":"what-does-a-field-class-do","children":[]}]},{"title":"Fo-aicme réimse a scríobh","anchor":"writing-a-field-subclass","children":[{"title":"Dífhoirmiú allamuigh","anchor":"field-deconstruction","children":[]},{"title":"Tréithe réimse nach mbíonn tionchar ag sainmhíniú","anchor":"field-attributes-not-affecting-database-column-definition","children":[]},{"title":"Athrú bunaicme réimse saincheaptha","anchor":"changing-a-custom-field-s-base-class","children":[]},{"title":"Do réimse saincheaptha a dhoiciméadú","anchor":"documenting-your-custom-field","children":[]},{"title":"Modhanna úsáideacha","anchor":"useful-methods","children":[{"title":"Cineálacha sonraí saincheaptha","anchor":"custom-database-types","children":[]},{"title":"Luachanna a thiontú go rudaí Python","anchor":"converting-values-to-python-objects","children":[]},{"title":"Rudaí Python a thiontú go luachanna ceisteanna","anchor":"converting-python-objects-to-query-values","children":[]},{"title":"Luachanna ceist a thiontú go luachanna bunachar","anchor":"converting-query-values-to-database-values","children":[]},{"title":"Luachanna réamhphróiseála sula sábháil","anchor":"preprocessing-values-before-saving","children":[]},{"title":"An réimse foirme do réimse samhail a shonrú","anchor":"specifying-the-form-field-for-a-model-field","children":[]},{"title":"Cineálacha réimse ionsuite a aithris","anchor":"emulating-built-in-field-types","children":[]},{"title":"Sonraí réimse a thiontú le haghaidh sraitheadh","anchor":"converting-field-data-for-serialization","children":[]}]},{"title":"Roinnt comhairle ginearálta","anchor":"some-general-advice","children":[]}]},{"title":"Ag scríobh fo-aicme Filefield","anchor":"writing-a-filefield-subclass","children":[{"title":"Cúpla moladh","anchor":"a-few-suggestions","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"Treoracha conas","url":"/ga/6.1/howto/"}],"prev":{"docname":"howto/legacy-databases","title":"Conas Django a chomhtháthú le bunachar sonraí oidhreachta","url":"/ga/6.1/howto/legacy-databases/"},"next":{"docname":"howto/writing-migrations","title":"Conas imirce bunachar sonraí a chruthú","url":"/ga/6.1/howto/writing-migrations/"},"formats":{"html":"/ga/6.1/howto/custom-model-fields/","markdown":"/ga/6.1/howto/custom-model-fields.md","json":"/ga/6.1/howto/custom-model-fields.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/howto/custom-model-fields.txt","official":"https://docs.djangoproject.com/ga/6.1/howto/custom-model-fields/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}