Agen Setelan Kueri
Saat mengakses bidang ManyToMany dan ReverseForeignKey yang relevan secara langsung, daftar model terkait dikembalikan.
Tetapi juga memaparkan subset dari QuerySet API, sehingga Anda dapat memfilter, membuat, memilih model terkait, dll. langsung dari model induk.
!!!Perhatikan bahwa, secara default, QuerySet publik telah difilter untuk mengembalikan hanya model yang terkait dengan model induk.
1 | |
!!!Perhatikan bahwa saat mengakses metode QuerySet API melalui QuerysetProxy, Anda tidak perlu menggunakan properti objek seperti kueri biasa.
1 2 3 | |
!!!Peringatan Mempercepat model terkait dari ManyToMany menghapus daftar model terkait yang dimuat pada model induk:
1 2 3 4 5 6 7 8 9 | |
Baca data dari database
mendapatkan
Dapatkan (**kwargs): - > model
Untuk mendapatkan hanya satu model relevan yang disaring berdasarkan nama, Anda dapat menggunakan metode get (**kwargs).
1 2 3 4 5 6 7 8 9 | |
Tip
Memperoleh atau membuat
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]
Upaya untuk mendapatkan baris yang memenuhi kriteria, dan jika pengecualian NoMatch dilemparkan, baris baru dibuat dengan kwarg dan\ _ default yang diberikan.
!!!Tip Baca lebih lanjut di dokumen kueri, dapatkan\ _ atau\ _ buat
semuanya
all(**kwargs) -> List[Optional["Model"]]
Untuk mendapatkan daftar model terkait, gunakan metode all ().
Harap dicatat bahwa Anda dapat memfilter set kueri, memilih yang relevan, mengecualikan bidang, dan sebagainya seperti kueri biasa.
1 2 3 4 5 6 7 | |
Tip
iterasi
iterate(**kwargs) -> AsyncGenerator["Model"]
Untuk mengulangi model terkait, gunakan metode iterasi ().
Harap dicatat bahwa Anda dapat memfilter set kueri, memilih yang relevan, mengecualikan bidang, dan sebagainya seperti kueri biasa.
1 2 3 | |
Tip
Masukkan / perbarui data ke dalam database
membuat
Buat (**kwargs): - > Model
Buat model terkait langsung dari model induk.
Tabel tertaut dan ID relasional dalam database diisi secara otomatis.
1 2 3 4 | |
Tip
Untuk banyak-ke-banyak hubungan, jika Anda menyatakan bidang tambahan pada model pass-through yang disediakan secara eksplisit, ada kemampuan tambahan untuk melewati parameter yang akan digunakan untuk membuat model pass-through.
Diberikan sampel seperti itu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
Anda dapat mengisi bidang dengan model dalam panggilan buat () dengan cara berikut:
1 2 3 4 5 6 7 | |
Memperoleh atau membuat
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]
Upaya untuk mendapatkan baris yang memenuhi kriteria, dan jika pengecualian NoMatch dilemparkan, baris baru dibuat menggunakan kwarg yang diberikan.
!!!Tip Baca lebih lanjut di dokumen kueri, dapatkan\ _ atau\ _ buat
Perbarui atau buat
update_or_create(**kwargs) -> Model
Perbarui model, atau buat model baru jika tidak ada kecocokan dalam database.
!!!Tip Baca Selengkapnya di pembaruan Dokumentasi Kueri\ _ atau\ _ buat
pembaruan
update(**kwargs, each:bool = False) -> int
Perbarui model yang relevan dengan parameter kata kunci yang disediakan, kembalikan jumlah baris yang diperbarui.
Harap dicatat bahwa parameter dengan nama bidang dan kamus bidang juga dapat diterima untuk pembaruan relasional banyak-ke-banyak.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
Pada contoh di atas, Anda dapat memperbarui properti postkategori dalam panggilan berikut:
1 2 3 | |
Penyaringan dan penyortiran
penyaring
filter(*args, **kwargs) -> QuerySet
Memungkinkan Anda memfilter berdasarkan atribut / bidang model apa pun dan mendapatkan instance menggunakan filter di seluruh hubungan FK.
Tip
mengecualikan
exclude(*args, **kwargs) -> QuerySet
Ini bekerja persis sama dengan filter, dan semua pengubah (akhiran) sama, tetapi kondisi tidak dikembalikan.
Tip
Dasar pemesanan
order_by(columns:Union[List, str]) -> QuerySet
Menggunakan order\ _ by (), Anda dapat mengurutkan hasil di database dengan bidang yang Anda pilih.
!!!Tip Baca lebih lanjut dalam urutan dokumen kueri\ _ by
Bergabung dan mengajukan
Pilih yang relevan
select_related(related: Union[List, str]) -> QuerySet
Memungkinkan model terkait untuk dipilih selama kueri yang sama.
Saat menggunakan\ _ lated terpilih, selalu hanya satu kueri yang di jalankan terhadap database, yang berarti sambungan (terkadang kompleks) dihasilkan dan model bersarang selanjutnya diproses dalam Python.
!!!Tip Baca lebih lanjut tentang pilih\ _ lated dalam dokumen kueri
korelasi prefetch
prefetch_related(related: Union[List, str]) -> QuerySet
Hal ini diperbolehkan untuk prefetch model terkait selama kueri - tetapi sebagai lawan dari\ _ lated terpilih, setiap model berikutnya diambil dalam kueri database terpisah.
Dengan prefetch\ _ lated, setiap model menjalankan satu pertanyaan terhadap database, yang berarti Anda akan mengeksekusi beberapa pertanyaan satu demi satu.
!!!Tip Baca lebih lanjut di dokumen kueri prefetch\ _ lated
Halaman dan baris
paging
paginate(page: int, page_size: int = 20) -> QuerySet
Menggabungkan metode offset dan limit berdasarkan nomor halaman dan ukuran.
Tip
pembatasan
limit(limit_count: int) -> QuerySet
Anda dapat membatasi hasil pada jumlah model induk yang diperlukan.
Tip
offset
offset(offset: int) -> QuerySet
Anda dapat mengimbangi hasilnya dengan jumlah model master yang diperlukan.
Tip
Pilih subset kolom
lapangan
fields(columns: Union[List, str, set, dict]) -> QuerySet
Dengan bidang (), Anda dapat memilih subset kolom model untuk membatasi beban data.
Tip
bidang eksklusi
exclude_fields(columns: Union[List, str, set, dict]) -> QuerySet
Dengan kecuali\ _ field (), Anda dapat memilih subset kolom model untuk dikecualikan untuk membatasi pemuatan data.
!!!Tip Pelajari lebih lanjut dalam dokumentasi kueri kecuali\ _ bidang
fungsi agregat
menghitung
count(distinct: bool = True) -> int
Mengembalikan jumlah baris yang sesuai dengan kriteria yang diberikan (yaitu menerapkan filter dan pengecualian).
Tip
ada
Keberadaan () - > Boolean
Mengembalikan nilai Boolean untuk mengkonfirmasi apakah ada baris yang memenuhi kriteria yang diberikan (diterapkan dengan filter dan pengecualian).
Tip