Python

Bagaimana Memfilter Data di Django?

Bagaimana Memfilter Data di Django?
Ini adalah persyaratan yang sangat umum bagi aplikasi web untuk menampilkan data pada halaman web berdasarkan minat pengguna. Fitur pencarian aplikasi membuatnya lebih ramah pengguna.  Kerangka kerja Django memiliki built-in Saring() metode untuk menyaring data dari tabel database. Sebuah tabel dapat berisi banyak record dan terkadang menentukan beberapa data spesifik diperlukan berdasarkan kriteria tertentu. Tugas ini menjadi lebih mudah dengan menggunakan saringan() metode dengan cara yang berbeda. Bagaimana data dari tabel database dapat difilter menggunakan metode filter dalam empat cara berbeda akan dibahas dalam tutorial ini.

Prasyarat

Sebelum mempraktikkan contoh tutorial ini, Anda harus menyelesaikan tugas-tugas berikut:

  1. Instal Django versi 3+ di Ubuntu 20+ (lebih disukai)
  2. Buat proyek Django
  3. Jalankan server Django untuk memeriksa server bekerja dengan benar atau tidak.

Siapkan Aplikasi Django

SEBUAH. Jalankan perintah berikut untuk membuat aplikasi Django bernama aplikasi filter.

$ python3 kelola.py startapp filterapp

B. Jalankan perintah berikut untuk membuat pengguna untuk mengakses database Django. Jika Anda telah membuat pengguna sebelumnya maka tidak perlu menjalankan perintah.

$ python3 kelola.py buat pengguna super

C. Tambahkan nama aplikasi di INSTALLED_APP bagian dari py mengajukan.

INSTALLED_APPS = [

'filterapp'
]

D. Buat folder bernama template di dalam aplikasi filter folder dan atur template lokasi aplikasi di TEMPLATE bagian dari py mengajukan.

TEMPLATE = [

… .
'DIRS': ['/home/fahmida/django_pro/filterapp/templates'],
… .
,
]

Buat Model untuk Tabel Database

Buka model.py file dari aplikasi filter folder dan tambahkan skrip berikut untuk menentukan struktur para karyawan meja. Karyawan kelas didefinisikan untuk membuat tabel bernama para karyawan dengan nama, pos, email, departemen, dan tanggal Bergabung bidang. Sini, nama, pos, dan departemen bidang akan menyimpan data karakter, surel bidang akan menyimpan alamat email dan tanggal Bergabung bidang akan menyimpan data tanggal.

model.py

# Modul model impor
dari django.model impor db
# Tentukan kelas untuk membuat tabel karyawan
Kelas Karyawan(model.Model):
nama = model.CharField(max_length=50)
pos = model.CharField(max_length=40)
email = model.Bidang Email()
departemen = model.CharField(max_length=30)
joinning_date = model.TanggalField()

Jalankan kepindahan perintah untuk membuat migrasi baru berdasarkan perubahan yang dibuat oleh model.

$ python3 kelola.py makemigrations filterapp

Jalankan migrasi perintah untuk menjalankan perintah SQL dan membuat semua tabel dalam database yang didefinisikan di model.py mengajukan.

$ python3 kelola.py bermigrasi

Ubah konten admin.py file dengan konten berikut:. Sini, pekerja kelas model didaftarkan menggunakan pendaftaran() metode untuk menampilkan catatan karyawan tabel di dasbor administrasi Django.

admin.py

# Impor modul admin
dari django.kontribusi impor admin
# Impor model Karyawan
dari .model impor Karyawan
# Daftar model karyawan
admin.situs.daftar (Karyawan)

Jalankan URL berikut untuk membuka halaman login admin Django. Berikan nama pengguna dan kata sandi yang valid untuk membuka Dasbor Administrasi Django untuk mengakses tabel database.

Masukkan dua atau lebih catatan Karyawan untuk menerapkan filter pada data. Di sini lima catatan dimasukkan.

Buat Cari.html file di dalam filterapp/templat/ folder dengan skrip berikut:. Data dari karyawan tabel akan ditampilkan dalam file template ini. untuk loop digunakan untuk membaca isi dari daftar_objek variabel yang akan diteruskan dari file tampilan. Itu nama, pos, dan departemen nilai-nilai dari para karyawan tabel akan ditampilkan dengan menggunakan daftar.

Cari.html

<br>Tutorial Filter Django<br>

Daftar Karyawan



    % untuk emp di object_list %

  1. kosong.nama ( kosong.pos )


    kosong.departemen departemen



  2. % akhir untuk %

Buka dilihat.py file dari aplikasi filter folder dan ubah konten file dengan skrip berikut:. Nama model dan template ditentukan dalam skrip.

dilihat.py

# Impor modul ListView
dari django.dilihat.ListView impor generik
# Impor modul Karyawan
dari .model impor Karyawan
# Impor modul Q
dari django.db.model impor Q
# Tentukan kelas untuk memfilter data
kelas SearchEmployee(ListView):
# Tentukan model
model = Karyawan
# Tentukan template
template_name = 'cari.html'

Ubah konten url.py file dengan konten berikut:. Dalam naskah, 'cariEmp' jalur didefinisikan untuk memanggil CariKaryawan.sebagai_view() metode yang akan mengirim semua data dan data yang disaring dari of para karyawan tabel ke file template.

url.py

# Impor modul admin
dari django.kontribusi impor admin
# Impor jalur dan sertakan modul
dari django.jalur impor url, sertakan
# Impor modul SearchEmployee
dari filterapp.lihat impor SearchEmployee
pola url = [
# Tentukan jalur untuk admin
jalur('admin/', admin.situs.url),
# Tentukan jalur untuk pencarian
path('searchEmp/', SearchEmployee.as_view()),
]

Output berikut akan muncul tanpa menerapkan pemfilteran apa pun untuk URL berikut.

http://localhost:8000/SerachEmp

Filter Data dengan Penyaringan Sederhana

Tambahkan baris berikut di akhir dilihat.py file untuk menyaring catatan dari para karyawan tabel dimana nilai pos lapangan adalah 'Akuntan'.

# Terapkan pemfilteran dasar
queryset = Karyawan.benda-benda.filter(posting ='Akuntan')

Output berikut akan muncul setelah menerapkan pemfilteran dasar.

Filter Data dengan Beberapa Bidang

Tambahkan baris berikut di akhir dilihat.py file untuk menyaring catatan dari para karyawan tabel dimana nilai departemen lapangan adalah 'HT' dan email lapangan adalah '[dilindungi email]'.

# Terapkan pemfilteran dengan banyak bidang
queryset = Karyawan.benda-benda.filter(department='HR', email='[email protected]')

Output berikut akan muncul setelah menerapkan beberapa penyaringan.

Filter Data dengan Objek Q

Tambahkan baris berikut di akhir dilihat.py file untuk menyaring catatan dari para karyawan tabel dimana nilai pos lapangan adalah 'Pengelola' atau nilai departemen lapangan adalah 'Penjualan'.

# Terapkan pemfilteran dengan menggunakan objek Q
queryset = Karyawan.benda-benda.filter( Q(post='Manager') | Q(departemen='Penjualan'))

Output berikut akan muncul setelah menerapkan pemfilteran objek Q.

Filter Data dengan Menggunakan Filter Chaining

Tambahkan baris berikut di akhir dilihat.py file untuk menyaring catatan dari para karyawan tabel dimana nilai departemen bidang akan diperiksa terlebih dahulu dan jika mengembalikan true maka nilai nama lapangan akan diperiksa.

# Terapkan pemfilteran dengan merantai
queryset = Karyawan.benda-benda.filter(departemen='HR').filter(nama='Mehrab Hossain')

Output berikut akan muncul setelah menerapkan rantai filter.

Kesimpulan

Data dapat disaring di Django dalam banyak cara berdasarkan kebutuhan aplikasi. Empat cara pemfilteran yang berbeda dijelaskan dalam tutorial ini untuk memahami dasar-dasar pemfilteran Django. Ini adalah pemfilteran sederhana, pemfilteran ganda, pemfilteran dengan objek Q, dan rantai filter.

Mesin Game Gratis dan Sumber Terbuka untuk Mengembangkan Game Linux
Artikel ini akan membahas daftar mesin game sumber terbuka dan gratis yang dapat digunakan untuk mengembangkan game 2D dan 3D di Linux. Ada banyak mes...
Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah tambahan kedua belas untuk seri Tomb Raider - waralaba game aksi-petualangan yang dibuat oleh Eidos Montreal. Permain...
Cara Meningkatkan FPS di Linux?
FPS adalah singkatan dari Bingkai per detik. Tugas FPS adalah mengukur kecepatan bingkai dalam pemutaran video atau pertunjukan game. Dengan kata sede...