Come filtrare i dati in django?

Come filtrare i dati in django?
È un requisito molto comune per l'applicazione Web visualizzare i dati sulla pagina Web in base all'interesse dell'utente. La funzione di ricerca dell'applicazione lo rende più facile da usare. Django Framework ha un integrato filtro() Metodo per filtrare i dati dalle tabelle del database. Una tabella può contenere molti record e talvolta determinare alcuni dati specifici sono richiesti in base ai criteri particolari. Questo compito diventa più semplice utilizzando il filtro () Metodo in modi diversi. In questo tutorial i dati di una tabella di database possono essere filtrati utilizzando il metodo filtro in quattro modi diversi.

Prerequisiti

Prima di praticare gli esempi di questo tutorial, è necessario completare i seguenti compiti:

  1. Installa la versione Django 3+ su Ubuntu 20+ (preferibilmente)
  2. Crea un progetto Django
  3. Esegui il server Django per verificare che il server funzioni correttamente o meno.

Imposta un'app Django

UN. Esegui il seguente comando per creare un'app Django denominata filterapp.

$ Python3 Gestisci.Py Startapp Filterapp

B. Esegui il comando seguente per creare l'utente per accedere al database Django. Se hai creato l'utente prima, non è necessario eseguire il comando.

$ Python3 Gestisci.py createsuperuser

C. Aggiungi il nome dell'app in Installato_app parte di Py file.

Installato_apps = [
..
'Filterapp'
"

D. Crea una cartella denominata modelli dentro il filterapp cartella e impostare il modello Posizione dell'app nel file Modelli parte di Py file.

Modelli = [

.. .
'Dirs': ['/home/fahmida/django_pro/filterapp/templates'],
.. .
,
"

Crea un modello per la tabella del database

Apri il Modelli.Py file da filterapp cartella e aggiungere il seguente script per definire la struttura di dipendenti tavoli. Dipendente La classe è definita per creare una tabella denominata dipendenti con Nome, post, e -mail, dipartimento, E joining_date campi. Qui, Nome, post, E Dipartimento Fields memorizzerà i dati dei caratteri, il e-mail Il campo memorizzerà l'indirizzo e -mail e il joining_date Il campo memorizzerà i dati della data.

Modelli.Py

# Modulo dei modelli Importa
da Django.Modelli di importazione DB
# Definisci la classe per creare la tabella dei dipendenti
dipendente di classe (modelli.Modello):
name = modelli.Charfield (max_length = 50)
Post = modelli.Charfield (max_length = 40)
Email = modelli.Emailfield ()
dipartimento = modelli.Charfield (max_length = 30)
joinning_date = modelli.DateField ()

Corri il makemigrations comando per creare una nuova migrazione in base alle modifiche apportate dai modelli.

$ Python3 Gestisci.Py Makemigrations Filterapp

Corri il migrare comando di eseguire i comandi SQL e creare tutte le tabelle nel database definite nel Modelli.Py file.

$ Python3 Gestisci.py migrare

Modificare il contenuto del amministratore.Py File con il seguente contenuto. Qui, il dipendente La classe dei modelli è registrata utilizzando il registro() metodo per visualizzare il file Registri dei dipendenti Tabelle nella dashboard di amministrazione Django.

amministratore.Py

# Importa modulo amministratore
da Django.AMPIONE AMMINIO DI IMPIT
# Importa modello di dipendente
da .I modelli importano dipendenti
# Registra il modello dei dipendenti
amministratore.luogo.Registra (dipendente)

Esegui il seguente URL per aprire la pagina di accesso amministratore Django. Fornire il nome utente e la password validi per aprire il Dashboard di amministrazione Django Per accedere alle tabelle del database.

Inserire due o più record dei dipendenti per applicare il filtro sui dati. Qui vengono inseriti cinque record.

Creare il ricerca.html file all'interno del filterapp/modelli/ cartella con il seguente script. I dati dal dipendente La tabella verrà visualizzata in questo file modello. per Loop viene utilizzato per leggere il contenuto del object_list variabile che verrà passata dal file di visualizzazione. IL Nome, post, E Dipartimento valori di dipendenti La tabella verrà visualizzata utilizzando l'elenco.

ricerca.html

<br>Tutorial del filtro Django<br>

Elenco dei dipendenti



    % per EMP in object_list %

  1. emp.nome (emp.inviare )


    emp.Dipartimento Dipartimento



  2. % endfor %

Apri il visualizzazioni.Py file da filterapp cartella e modificare il contenuto del file con il seguente script. I nomi del modello e dei modelli sono definiti nello script.

visualizzazioni.Py

# Importa modulo ListView
da Django.visualizzazioni.Elenco delle importazioni generiche
# Importa il modulo dei dipendenti
da .I modelli importano dipendenti
# Importa modulo Q
da Django.db.Modelli importano Q
# Definisci la classe per filtrare i dati
Classe SearchEmployee (ListView):
# Definisci modello
modello = dipendente
# Definisci modello
template_name = 'Search.html '

Modificare il contenuto del URL.Py File con il seguente contenuto. Nella sceneggiatura, il 'Searchemp'Il percorso è definito per chiamare il Searchmpleee.as_view () metodo che invierà tutti i dati e i dati filtrati del dipendenti Tabella al file modello.

URL.Py

# Importa modulo amministratore
da Django.AMPIONE AMMINIO DI IMPIT
# Percorso di importazione e includi il modulo
da Django.percorso di importazione URLS, includi
# Importa il modulo SearchEmployee
da Filterapp.Visualizzazioni Importa Search Dymployee
urlpatterns = [
# Definisci il percorso per l'amministratore
Path ('Admin/', Admin.luogo.URL),
# Definisci il percorso per la ricerca
Path ('Searchemp/', SearchPkeree.as_view ()),
"

Verrà visualizzato il seguente output senza applicare alcun filtro per il seguente URL.

http: // localhost: 8000/serachemp

Filtro Dati mediante filtraggio semplice

Aggiungi la riga seguente alla fine del visualizzazioni.Py file per filtrare i record del dipendenti tabella dove il valore del inviare Il campo è 'Contabile'.

# Applica il filtro di base
QuerySet = dipendente.oggetti.filtro (post = 'contabile')

Verrà visualizzato il seguente output dopo l'applicazione del filtro di base.

Filtro dati con più campi

Aggiungi la riga seguente alla fine del visualizzazioni.Py file per filtrare i record del dipendenti tabella dove il valore del Dipartimento Il campo è 'Ht' E l'email il campo è '[email protected].

# Applica il filtro con più campi
QuerySet = dipendente.oggetti.filtro (dipartiment = 'hr', email = '[email protected] ')

Verrà visualizzato il seguente output dopo aver applicato più filtrazioni.

Filtro dati con oggetto Q

Aggiungi la riga seguente alla fine del visualizzazioni.Py file per filtrare i record del dipendenti tabella dove il valore del inviare Il campo è 'Manager'o il valore del Dipartimento Il campo è 'Saldi'.

# Applica il filtro utilizzando gli oggetti Q
QuerySet = dipendente.oggetti.filtro (Q (post = 'manager') | q (dipartiment = 'Sales'))

Verrà visualizzato il seguente output dopo l'applicazione del filtro dell'oggetto Q.

Filtro dati utilizzando il concatenamento del filtro

Aggiungi la riga seguente alla fine del visualizzazioni.Py file per filtrare i record del dipendenti tabella dove il valore del Dipartimento Il campo verrà controllato per primo e se restituisce vero, il valore del nome Il campo verrà controllato.

# Applicare il filtro concapatico
QuerySet = dipendente.oggetti.filtro (dipartimento = 'hr').filtro (name = 'mehrab hossain')

La seguente uscita apparirà dopo aver applicato il concatenamento del filtro.

Conclusione

I dati possono essere filtrati in Django in molti modi in base ai requisiti dell'applicazione. In questo tutorial sono stati spiegati quattro diversi modi di filtraggio per comprendere le basi del filtro Django. Si tratta di filtraggio semplice, filtraggio multiplo, filtraggio con oggetto Q e concatenamento del filtro.