---
title: "Tagairt rudaí gaolmhara"
version: 5.2
locale: ga
source: https://docs.djangoproject.com/ga/5.2/ref/models/relations/
canonical: https://djangodocs.dev/ga/5.2/ref/models/relations/
---
# Tagairt rudaí gaolmhara

#### `class RelatedManager`

Is bainisteoir é “bainisteoir gaolmhar” a úsáidtear i gcomhthéacs gaolmhar duine le go leor nó go leor. Tarlaíonn sé seo i dhá chás:

- An “taobh eile” de a:class: ~Django.db.Models.ForeignKey gaol. Is é sin:

  ```
  from django.db import models

  class Blog(models.Model):
      # ...
      pass

  class Entry(models.Model):
      blog = models.ForeignKey(Blog, on_delete=models.CASCADE, null=True)
  ```

  Sa sampla thuas, beidh na modhanna thíos ar fáil ar an mbainisteoir `blog.entry_set`.
- An dá thaobh de a:class: ~Django.db.Models.ManyTomanyField gaol:

  ```
  class Topping(models.Model):
      # ...
      pass

  class Pizza(models.Model):
      toppings = models.ManyToManyField(Topping)
  ```

  Sa sampla seo, beidh na modhanna thíos ar fáil ar `topping.pizza_set` agus ar pizza.toppings\`.

#### `add(*objs, bulk=True, through_defaults=None)`

#### `aadd(*objs, bulk=True, through_defaults=None)`

*Asynchronous version*: `aadd`

Cuireann sé na rudaí samhail sonraithe leis an tacar réad gaolmhar.

Sampla:

```pycon
>>> b = Blog.objects.get(id=1)
>>> e = Entry.objects.get(id=234)
>>> b.entry_set.add(e)  # Associates Entry e with Blog b.
```

\<django.db.models.query.QuerySet.update\>Sa sampla thuas, i gcás caidreamh a:class: ~Django.db.Models.ForeignKey, úsáidtear:: meth: QuerySet.Update () chun an nuashonrú a dhéanamh. Éilíonn sé seo go ndéanfar na rudaí a shábháil cheana féin.

Is féidir leat an argóint `Bulk=False` a úsáid chun an bainisteoir gaolmhar an nuashonrú a dhéanamh ina ionad sin trí ghlaoch ar e.save () .

\<django.db.models.query.QuerySet.bulk\_create\>Ag baint úsáide as add () \`\`le caidreamh go leor, áfach, ní ghlaofar aon mhodhanna \`\`save ()\` (níl an argóint `bulk` ann), ach cruthófar na caidrimh ag baint úsáid:meth: QuerySet.bulk\_create () \`. Más gá duit roinnt loighic saincheaptha a fhorghníomhú nuair a chruthaítear caidreamh, éist leis an gcomhartha: data: \`~django.db.models.signals.m2m\_changed, a spreagfaidh gníomhartha `pre_add` agus `post_add`.

Ní dhúbailt an gaol a úsáid add () ar ghaol atá ann cheana féin, ach spreagfaidh sé comharthaí fós.

Maidir le caidrimh go go leor glacann add () \`\`le cásanna samhail nó luachanna réimse, eochracha bunscoile de ghnáth, mar argóint \`\`\*objs\`.

\<intermediary-manytomany\>Úsáid an argóint through\_defaults\` chun luachanna a shonrú do shampla nua:ref: samhail idirmheán, más gá. Is féidir leat glaonna a úsáid mar luachanna sa fhoclóir through\_defaults agus déanfar iad a mheas uair amháin sula gcruthófar aon sampla (í) idirmheánach.

#### `create(through_defaults=None, **kwargs)`

#### `acreate(through_defaults=None, **kwargs)`

*Asynchronous version*: `acreate`

Cruthaíonn sé réad nua, sábhálann sé agus cuireann sé sa tacar réad gaolmhar é. Tugann an réad nua-chruthaithe ar ais:

```pycon
>>> b = Blog.objects.get(id=1)
>>> e = b.entry_set.create(
...     headline="Hello", body_text="Hi", pub_date=datetime.date(2005, 1, 1)
... )

# No need to call e.save() at this point -- it's already been saved.
```

Tá sé seo coibhéiseach le (ach níos simplí ná):

```pycon
>>> b = Blog.objects.get(id=1)
>>> e = Entry(blog=b, headline="Hello", body_text="Hi", pub_date=datetime.date(2005, 1, 1))
>>> e.save(force_insert=True)
```

Tabhair faoi deara nach gá argóint eochairfhocal an tsamhail a shonrú a shainmhíníonn an caidreamh. Sa sampla thuas, ní chuirimid an paraiméadar ```blog ``ar aghaidh chuig ``create ()```. Figireann Django amach gur chóir réimse ```blog ``réad nua ``Entry``` a shocrú go `b`.

\<intermediary-manytomany\>Úsáid an argóint through\_defaults\` chun luachanna a shonrú don shampla nua:ref: samhail idirmheán, más gá. Is féidir leat glaonna a úsáid mar luachanna sa fhoclóir through\_defaults\`.

#### `remove(*objs, bulk=True)`

#### `aremove(*objs, bulk=True)`

*Asynchronous version*: `aremove`

Baineann na rudaí samhail sonraithe as an tacar réad gaolmhar:

```pycon
>>> b = Blog.objects.get(id=1)
>>> e = Entry.objects.get(id=234)
>>> b.entry_set.remove(e)  # Disassociates Entry e from Blog b.
```

Cosúil le:meth: add () \`, tugtar \`\`e.save () \`\`sa sampla thuas chun an nuashonrú a dhéanamh. Ag baint úsáide as \`remove () \`\`le caidreamh go leor, scriosfar na caidrimh ag baint úsáid:meth: \`QuerySet.delete () \`\<django.db.models.query.QuerySet.delete\>rud a chiallaíonn nach dtugtar modhanna samhail \`\`save ()\`; éist leis an comhartha: data: ~django.db.models.signals.m2m\_changed más mian leat cód saincheaptha a chur i bhfeidhm nuair a scriostar caidreamh.

Maidir le caidrimh go leor glacann ```remove () ``le cásanna samhail nó luachanna réimse, eochracha príomhúla de ghnáth, mar argóint ``*objs```.

Maidir le rudaí: Class: ~Django.db.Models.ForeignKey, níl an modh seo ann ach má tá `Null=True`. Mura féidir an réimse gaolmhar a shocrú go `None` (NULL\`), ansin ní féidir réad a bhaint as gaol gan é a chur le ceann eile. Sa sampla thuas, tá e\` a bhaint as ```b.entry_set () ``comhionann le ``e.blog = None``` a dhéanamh, agus toisc nach bhfuil `Null=True` ag an `blog`:class: ~django.db.models.foreignKey, tá sé seo neamhbhailí.

Maidir le rudaí: Class: ~Django.db.Models.ForeignKey, glacann an modh seo le argóint `bulk` chun rialú a dhéanamh conas an oibríocht a dhéanamh. Má tá `True` (an réamhshocrú), úsáidtear ```QuerySet.Update () ``. Má tá ``Bulk=false ``, tugtar an modh ``save ()``` de gach samhail aonair ina ionad. Spreagann sé seo comharthaí: ~django.db.models.signals.pre\_save agus:data: ~django.db.models.signals.post\_save agus tagann sé ar chostas na feidhmíochta.

Maidir le caidrimh go leor, níl an argóint eochairfhocal `bulk` ann.

#### `clear(bulk=True)`

#### `aclear(bulk=True)`

*Leagan asincrón*: `aclear`

Baineann gach rud as an tacar réad gaolmhar:

```pycon
>>> b = Blog.objects.get(id=1)
>>> b.entry_set.clear()
```

Tabhair faoi deara nach scriosann sé seo na rudaí gaolmhara - dícheanglaíonn sé ach iad.

Díreach mar ```remove () ``, níl `clear ()``` ar fáil ach ar:class: ~django.db.models.foreignKeys ina bhfuil `null=true` agus glacann sé leis an argóint eochairfhocal `bulk` freisin.

Maidir le caidrimh go leor, níl an argóint eochairfhocal `bulk` ann.

#### `set(objs, bulk=True, clear=False, through_defaults=None)`

#### `aset(objs, bulk=True, clear=False, through_defaults=None)`

*Leagan asincrón*: `aset`

Cuir an tacar rudaí gaolmhara in ionad:

```pycon
>>> new_list = [obj1, obj2, obj3]
>>> e.related_set.set(new_list)
```

Glacann an modh seo le argóint ```soiléir ``chun rialú a dhéanamh ar conas an oibríocht a dhéanamh. Má tá ``False``` (an réamhshocraithe), baintear na heilimintí atá in easnamh ón tacar nua ag baint úsáide as ```remove () ``agus ní chuirtear ach na cinn nua leis. Má tá ``clear=True```, tugtar an modh clear () ina ionad sin agus cuirtear an tacar iomlán leis ag an am céanna.

Maidir le rudaí: Class: ~Django.db.Models.ForeignKey, cuirtear an argóint `bulk` ar aghaidh chuig:meth: add agus:meth: remove.

Maidir le caidrimh go leor, níl an argóint eochairfhocal `bulk` ann.

Tabhair faoi deara ós rud é gur oibríocht chumaisc é ```set () ``, go bhfuil sé faoi réir coinníollacha cine. Mar shampla, féadfar rudaí nua a chur leis an mbunachar sonraí idir an glao chun ``clear () ``agus an glao chun ``add ()```.

Maidir le caidrimh go leor glacann set () \`\`liosta de chásanna samhail nó luachanna réimse, eochracha príomhúla de ghnáth, mar argóint \`\`objs\`.

\<intermediary-manytomany\>Úsáid an argóint through\_defaults\` chun luachanna a shonrú do shampla nua:ref: samhail idirmheán, más gá. Is féidir leat glaonna a úsáid mar luachanna sa fhoclóir through\_defaults agus déanfar iad a mheas uair amháin sula gcruthófar aon sampla (í) idirmheánach.

> **Note**
>
> Tabhair faoi deara go bhfeidhmíonn ```add () ``, `aadd ()```, create () \`, acreate ()\`, remove () \`, aremove ()\`, ```clear () ``, `aclear ()```, set () \`, set ()\`, agus ``` aset () ``athruithe láithreach do gach cineál réimsí gaolmhara. Is é sin le rá, ní gá glaoch ar `save () ` ```/asave () ar cheachtar deireadh an chaidrimh.
>
> Má úsáideann t:meth: ~django.db.models.query.queryset.prefetch\_related, an add () \`, aadd ()\`, ```remove () ``, `aremove ()```, ```clear () ``, ``clear ()```, aclear () \`, set ()\` agus Glanann modhanna aset () an taisce réamhfhaighte.
