Pembaca seperti Anda membantu mendukung MUO. Saat Anda melakukan pembelian menggunakan tautan di situs kami, kami dapat memperoleh komisi afiliasi.

Hubungan database menjelaskan koneksi antara tabel database yang berbeda. Relasi menentukan cara menyimpan dan mengambil data. Django bekerja dengan baik dengan sistem basis data relasional (RDBMS). Oleh karena itu, mendukung hubungan tabel database.

Jenis hubungan bergantung pada persyaratan aplikasi Anda dan data yang dimodelkan. Hubungan baik antara model Django dan basis data meningkatkan pemeliharaan data. Itu termasuk meningkatkan kinerja kueri dan mengurangi duplikasi data.

Anda dapat mempelajari bagaimana hubungan basis data Django memengaruhi kinerja aplikasi dengan menjelajahi tiga tipe utama hubungan.

Relasi Basis Data

Sistem basis data relasional mendukung tiga jenis hubungan basis data. Hubungan ini adalah satu-ke-banyak, banyak-ke-banyak, dan satu-ke-satu. Jenis relasi database memengaruhi kasus penggunaan aplikasi Anda.

Model Django

instagram viewer
mewakili tabel database di aplikasi. Anda harus membuat hubungan yang baik antar tabel untuk membuat sistem database yang baik. Relasi basis data menentukan cara menyimpan dan menyajikan data dalam aplikasi Anda.

Untuk memahami relasi basis data, mulailah dengan membuat proyek Django bernama Kerudung. Aplikasi ini akan menjadi jejaring sosial lingkungan. Ini akan mengelola berbagai kegiatan sosial, keamanan, dan bisnis lingkungan.

Warga dapat mendaftar, masuk, dan membuat profil. Mereka juga dapat membuat postingan dan iklan bisnis untuk dilihat semua orang.

Untuk memulai, buat database yang akan menyimpan semua data lingkungan. Kemudian, Anda akan membuat model Profile, NeighborHood, Business, dan Post. Untuk membuat model, Anda harus menentukan hubungan yang dibutuhkan tabel database.

Relasi Basis Data Satu-ke-Satu

Hubungan satu-ke-satu menyiratkan catatan dalam satu model Django berhubungan dengan catatan lain dalam model lain. Kedua catatan bergantung satu sama lain. Dalam hal ini, Model profil tergantung pada Model pengguna untuk membuat profil penduduk.

Jadi hanya boleh ada satu profil untuk setiap penduduk yang terdaftar di aplikasi. Selain itu, tanpa pengguna, profil tidak akan ada.

dari django.db impor model
daridjango.contrib.auth.modelimporPengguna

kelasProfil(model. Model):
pengguna = model. OneToOneField (Pengguna, on_delete=model. CASCADE, related_name='Profil')
nama = model. CharField (max_length=80, kosong=BENAR)
bio = model. Bidang Teks (max_length=254, kosong=BENAR)
profile_picture = CloudinaryField('foto profil', bawaan='default.png')
lokasi = model. CharField (max_length=50, kosong=BENAR, batal=BENAR)
email = model. Bidang Email(batal=BENAR)

def__str__(diri sendiri):
kembali F'{diri sendiri.user.username} profil'

Model Pengguna Django adalah model autentikasi bawaan di Django. Anda tidak perlu membuat model untuk itu. Sebagai gantinya, impor dari django.contrib.auth. Itu OneToOneField() pada Model profil mendefinisikan hubungan satu-ke-satu.

Itu on_delete=model. RIAM argumen mencegah penghapusan salah satu catatan ini. Anda harus menghapus rekaman dari kedua tabel.

Anda dapat menggunakan antarmuka admin Django untuk memvisualisasikan hubungan di aplikasi Anda. Untuk masuk ke admin Django, Anda harus mendaftar sebagai pengguna admin yang dikenal sebagai a pengguna super.

Buat superuser dengan menjalankan perintah berikut di terminal:

pythonmengelola.pycreatesuperuser

Akan ada prompt untuk memasukkan nama pengguna, email, dan kata sandi Anda. Setelah Anda selesai melakukannya, mulai server.

Buka halaman admin di browser menggunakan URL http://127.0.0.1:8000/admin.

Anda akan melihat halaman admin tempat Anda dapat masuk dengan kredensial yang Anda buat sebelumnya. Setelah masuk, Anda akan melihat Grup Dan Pengguna objek. Kerangka pengesahan Django mengelola dua model ini. Di bagian bawah, Anda akan melihat Model profil.

Buka Profil model dan lanjutkan untuk menambahkan profil. Anda akan melihat tampilannya sebagai berikut:

Perhatikan bahwa Anda memiliki opsi untuk membuat profil bagi pengguna. Tipe data OneToOneField() memungkinkan Anda membuat profil untuk pengguna yang diautentikasi. Beginilah cara aplikasi mengelola hubungan satu-ke-satu.

Relasi Satu ke Banyak

Relasi one-to-many mengimplikasikan bahwa satu record dalam model berasosiasi dengan banyak record dalam model lain. Ini juga disebut sebagai hubungan banyak-ke-satu.

Dalam kasus Anda, satu admin dapat membuat beberapa lingkungan. Namun setiap lingkungan hanya dapat dimiliki oleh satu admin. Anda dapat menggunakan tipe data ForeignKey untuk menentukan hubungan tersebut.

Django memiliki antarmuka admin bawaan. Anda tidak perlu membuat model untuk itu. Admin memiliki hak untuk mengelola konten dan memvisualisasikan aplikasi dari panel admin.

Model yang menampung banyak catatan akan memiliki Kunci asing. Ini mendefinisikan hubungan sebagai satu-ke-banyak. Kode di bawah ini menunjukkan tempat meletakkan kunci.

kelasLingkungan(model. Model):
admin = model. Kunci asing("Profil", on_delete=model. CASCADE, related_name='tudung')
nama = model. CharField (max_length=50)
lokasi = model. CharField (max_length=60)
hood_logo = CloudinaryField('hood_logo', bawaan='default.png')
deskripsi = model. Bidang Teks()
health_tell = model. Bidang Bilangan Bulat(batal=BENAR, kosong=BENAR)
polisi_nomor = model. Bidang Bilangan Bulat(batal=BENAR, kosong=BENAR)
Hitung = model. Bidang Bilangan Bulat(batal=BENAR, kosong=BENAR)

def__str__(diri sendiri):
kembali F'{diri sendiri.nama} tudung'

Anda dapat melihat hubungan pada aplikasi seperti yang diilustrasikan pada gambar:

Itu Lingkungan model sekarang memiliki admin. Bagi siapa pun untuk membuat lingkungan, mereka harus memiliki hak admin. Dan satu lingkungan tidak dapat memiliki banyak administrator.

Relasi Database Banyak ke Banyak

Dalam banyak-ke-banyak hubungan, banyak rekaman dalam satu model diasosiasikan dengan yang lain di model lain. Misalnya, Pos Dan Bisnis model dapat memiliki beberapa catatan satu sama lain. Pengguna dapat membuat beberapa iklan bisnis di postingan mereka dan sebaliknya.

Namun, membuat banyak-ke-banyak hubungan dapat menyebabkan data yang tidak akurat. Di framework lain, Anda harus membuat tabel baru untuk menggabungkan kedua tabel.

Django punya solusi untuk ini. Saat Anda menggunakan bidang banyak-ke-banyak, Ini membuat tabel baru yang memetakan dua tabel bersama. Anda dapat menempatkan bidang banyak-ke-banyak di salah satu dari dua model, tetapi tidak boleh di kedua model.

kelasPos(model. Model):
judul = model. CharField (max_length=120, batal=BENAR)
pos = model. Bidang Teks()
tanggal = model. DateTimeField (auto_now_add=BENAR)
pengguna = model. ForeignKey (Profil, on_delete=model. CASCADE, related_name='post_owner')
kerudung = model. ForeignKey (NeighbourHood, on_delete=model. CASCADE, related_name='hood_post')
bisnis = model. ManyToManyField (Bisnis)

def__str__(diri sendiri):
kembali F'{diri sendiri.judul} postingan'

Sekarang, ketika Anda melihat Pos model di panel admin, Anda dapat melampirkan beberapa bisnis ke satu postingan.

Django Menyederhanakan Hubungan Database

Jenis database yang Anda gunakan untuk aplikasi Anda menentukan cara memanfaatkan data. Django memiliki sistem komprehensif yang memudahkan menghubungkan dan mengoperasikan basis data relasional.

Fitur Django membuatnya mudah untuk menyimpan dan mengambil data dari tabel terkait. Ini memiliki API bawaan yang menghubungkan dan membuat relasi basis data untuk aplikasi Anda.

Hubungan basis data menentukan perilaku aplikasi Anda. Apakah Anda menggunakan hubungan satu-ke-satu, satu-ke-banyak, atau banyak-ke-banyak bergantung pada Anda.

Dengan Django, Anda dapat mengonfigurasi dan menguji fitur tanpa merusak aplikasi Anda. Gunakan Django untuk mengamankan sistem basis data dan optimalkan pengalaman pengembang Anda.