Skip to content

djangodocs

Django 5.2
  • 6.1 current
  • 6.0
  • 5.2 LTS
  • 5.1 unsupported
  • 5.0 unsupported
  • 4.2 unsupported
  • 4.1 unsupported
  • 4.0 unsupported
  • 3.2 unsupported
  • 3.1 unsupported
  • 3.0 unsupported
  • 2.2 unsupported
  • 2.1 unsupported
  • 2.0 unsupported
  • 1.11 unsupported
  • 1.10 unsupported
  • 1.9 unsupported
Bahasa Indonesia
  • English
  • Svenska
  • 简体中文
  • Gaeilge
  • Français
  • 日本語
  • Bahasa Indonesia
  • Italiano
  • Português (Brasil)
  • 한국어
  • Español
  • Ελληνικά
  • Polski
Documentation contents
  • Dokumentasi Django
  • Mulai
  • Menggunakan Django
  • Panduan Cara-cara
  • FAQ Django
  • Acuan API
    • Aplikasi
    • Kerangka pemeriksaan sistem
    • API tampilan berdasarkan-kelas siap-pakai
    • Perlindungan clickjacking
    • Paket contrib
    • Perlindungan Cross Site Request Forgery
    • Basisdata
    • django-admin dan manage.py
    • Pengecualian Django
    • Penanganan berkas
    • Formulir
    • Pencatatan
    • Middleware
    • Tindakan Perpindahan
    • Model
      • Acuan bidang model
      • Acuan index model
      • Constraints reference
      • API _meta model
      • Acuan obyek terkait
      • Acuan kelas model
      • Pilihan-pilihan Meta model
      • Acuan contoh model
      • Acuan API QuerySet
      • Acuan Pencarian API
      • Pernyataan Permintaan
      • Pernyataan Bersyarat
      • Fungsi Basisdata
    • Paginator
    • Obyek permintaan dan tanggapan
    • SchemaEditor
    • Pengaturan
    • Sinyal
    • Templat
    • TemplateResponse dan``SimpleTemplateResponse``
    • Data Unicode
    • Fungsi-fungsi kegunaan django.urls
    • Fungsi-fungsi django.urls untuk digunakan dalam URLconf
    • Perlengkapan Django
    • Pengesah
    • Tampilan Siap pakai
  • Dokumentasi-meta dan bunga rampai
  • Glosarium
  • Catatan terbitan
  • Dalam Django
Indonesian translation. Contributed by the Django community. 62.4% Help translate
  1. Django 5.2
  2. Acuan API
  3. Model

Acuan obyek terkaitLink to this heading#

class RelatedManagerLink to this definition#

A "related manager" is a manager used in a one-to-many or many-to-many related context. This happens in two cases:

  • "other side" dari sebuah hubungan ForeignKey. Yaitu:

    Code
    from django.db import models
    
    
    class Blog(models.Model):
        # ...
        pass
    
    
    class Entry(models.Model):
        blog = models.ForeignKey(Blog, on_delete=models.CASCADE, null=True)
    

    In the above example, the methods below will be available on the manager blog.entry_set.

  • Both sides of a ManyToManyField relation

    Code
    class Topping(models.Model):
        # ...
        pass
    
    
    class Pizza(models.Model):
        toppings = models.ManyToManyField(Topping)
    

    Dalam contoh ini, metode-metode dibawah akan tersedia kedua pada topping.pizza_set dan pada pizza.toppings.

add(*objs, bulk=True, through_defaults=None)Link to this definition#
aadd(*objs, bulk=True, through_defaults=None)Link to this definition#

Asynchronous version: aadd

Menambahkan obyek model ditentukan ke kumpulan obyek terkait.

Example:

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

Dalam contoh diatas, dalam kasus hubungan ForeignKey, QuerySet.update() digunakan untuk melakukan pembaharuan. Ini membutuhkan obyek-obyek untuk sudah disimpan.

Anda dapat menggunakan argumen bulk=False daripada memiliki pengelola terkait melakukan pembaharuan dengan memanggil e.save().

Using add() with a many-to-many relationship, however, will not call any save() methods (the bulk argument doesn't exist), but rather create the relationships using QuerySet.bulk_create(). If you need to execute some custom logic when a relationship is created, listen to the m2m_changed signal, which will trigger pre_add and post_add actions.

Menggunakan ada() pada hubungan yang sudah ada tidak akan menggandakan hubungan, tetapi itu akan masih memicu sinyal.

For many-to-many relationships add() accepts either model instances or field values, normally primary keys, as the *objs argument.

Use the through_defaults argument to specify values for the new intermediate model instance(s), if needed. You can use callables as values in the through_defaults dictionary and they will be evaluated once before creating any intermediate instance(s).

create(through_defaults=None, **kwargs)Link to this definition#
acreate(through_defaults=None, **kwargs)Link to this definition#

Asynchronous version: acreate

Creates a new object, saves it and puts it in the related object set. Returns the newly created object:

Python console
>>> 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.

This is equivalent to (but simpler than):

Python console
>>> 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)

Note that there's no need to specify the keyword argument of the model that defines the relationship. In the above example, we don't pass the parameter blog to create(). Django figures out that the new Entry object's blog field should be set to b.

Use the through_defaults argument to specify values for the new intermediate model instance, if needed. You can use callables as values in the through_defaults dictionary.

remove(*objs, bulk=True)Link to this definition#
aremove(*objs, bulk=True)Link to this definition#

Asynchronous version: aremove

Removes the specified model objects from the related object set:

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

Similar to add(), e.save() is called in the example above to perform the update. Using remove() with a many-to-many relationship, however, will delete the relationships using QuerySet.delete() which means no model save() methods are called; listen to the m2m_changed signal if you wish to execute custom code when a relationship is deleted.

For many-to-many relationships remove() accepts either model instances or field values, normally primary keys, as the *objs argument.

For ForeignKey objects, this method only exists if null=True. If the related field can't be set to None (NULL), then an object can't be removed from a relation without being added to another. In the above example, removing e from b.entry_set() is equivalent to doing e.blog = None, and because the blog ForeignKey doesn't have null=True, this is invalid.

For ForeignKey objects, this method accepts a bulk argument to control how to perform the operation. If True (the default), QuerySet.update() is used. If bulk=False, the save() method of each individual model instance is called instead. This triggers the pre_save and post_save signals and comes at the expense of performance.

Untuk hubungan many-to-many, argumen kata kunci bulk tidak ada.

clear(bulk=True)Link to this definition#
aclear(bulk=True)Link to this definition#

Asynchronous version: aclear

Removes all objects from the related object set:

Python console
>>> b = Blog.objects.get(id=1)
>>> b.entry_set.clear()

Catat ini tidak menghapus obyek-obyek terkait -- itu hanya memisahkan mereka.

Just like remove(), clear() is only available on ForeignKeys where null=True and it also accepts the bulk keyword argument.

Untuk hubungan many-to-many, argumen kata kunci bulk tidak ada.

set(objs, bulk=True, clear=False, through_defaults=None)Link to this definition#
aset(objs, bulk=True, clear=False, through_defaults=None)Link to this definition#

Asynchronous version: aset

Replace the set of related objects:

Python console
>>> new_list = [obj1, obj2, obj3]
>>> e.related_set.set(new_list)

This method accepts a clear argument to control how to perform the operation. If False (the default), the elements missing from the new set are removed using remove() and only the new ones are added. If clear=True, the clear() method is called instead and the whole set is added at once.

Untuk obyek ForeignKey, argumen bulk dilewatkan ke add() dan remove().

Untuk hubungan many-to-many, argumen kata kunci bulk tidak ada.

Note that since set() is a compound operation, it is subject to race conditions. For instance, new objects may be added to the database in between the call to clear() and the call to add().

For many-to-many relationships set() accepts a list of either model instances or field values, normally primary keys, as the objs argument.

Use the through_defaults argument to specify values for the new intermediate model instance(s), if needed. You can use callables as values in the through_defaults dictionary and they will be evaluated once before creating any intermediate instance(s).

Catatan

Note that add(), aadd(), create(), acreate(), remove(), aremove(), clear(), aclear(), set(), and aset() all apply database changes immediately for all types of related fields. In other words, there is no need to call save()/asave() on either end of the relationship.

If you use prefetch_related(), the add(), aadd(), remove(), aremove(), clear(), aclear(), set(), and aset() methods clear the prefetched cache.

This page as Markdown JSON

Edit this page on GitHub Official version

PreviousAPI _meta model NextAcuan kelas model

An unofficial rendering of the Django documentation.

Not affiliated with or endorsed by the Django Software Foundation. The documentation is copyright © Django Software Foundation and individual contributors, and is used under the BSD 3-Clause licence. “Django” is a trademark of the Django Software Foundation.

This translation is the work of the Django i18n community, not of this site. Read the official documentation at docs.djangoproject.com.

👋 Jason Cartwright