Jak filtrować dane w Django?

Jak filtrować dane w Django?
Jest to bardzo powszechny wymóg, aby aplikacja internetowa wyświetlała dane na stronie internetowej na podstawie zainteresowania użytkownika. Funkcja wyszukiwania aplikacji sprawia, że ​​jest bardziej przyjazna dla użytkownika. Django Framework ma wbudowane filtr() metoda filtrowania danych z tabel bazy danych. Tabela może zawierać wiele rekordów, a czasami wymagane są określone dane na podstawie konkretnych kryteriów. To zadanie staje się łatwiejsze, używając filtr () Metoda na różne sposoby. W tym samouczku można omówić dane z tabeli bazy danych za pomocą metody filtra na cztery różne sposoby.

Wymagania wstępne

Przed ćwiczeniem przykładów tego samouczka musisz wykonać następujące zadania:

  1. Zainstaluj wersję Django 3+ na Ubuntu 20+ (najlepiej)
  2. Utwórz projekt Django
  3. Uruchom serwer Django, aby sprawdzić, czy serwer działa poprawnie lub nie.

Skonfiguruj aplikację Django

A. Uruchom następujące polecenie, aby utworzyć aplikację Django o nazwie FilterApp.

$ Python3 Zarządzaj.PY startApp FilterApp

B. Uruchom następujące polecenie, aby utworzyć użytkownika w celu uzyskania dostępu do bazy danych Django. Jeśli wcześniej utworzyłeś użytkownika, nie musisz uruchamiać polecenia.

$ Python3 Zarządzaj.PY CreateSuperuser

C. Dodaj nazwę aplikacji w Zainstalowany_app część py plik.

Instalowane_apps = [

„FilterApp”
]

D. Utwórz folder o nazwie szablony w środku FilterApp folder i ustaw szablon Lokalizacja aplikacji w Szablony część py plik.

Szablony = [

… .
„Dirs”: ['/home/fahmida/django_pro/filterapp/szablony']],
… .
,
]

Utwórz model tabeli bazy danych

Otworzyć modele.py plik z FilterApp folder i dodaj następujący skrypt, aby zdefiniować strukturę pracownicy tabele. Pracownik Klasa jest zdefiniowana w celu utworzenia tabeli o nazwie pracownicy z Nazwa, post, e -mail, dział, I dołączanie_date Pola. Tutaj, Nazwa, post, I dział pola będą przechowywać dane znaków, e-mail pole będzie przechowywać adres e -mail i dołączanie_date pole będzie przechowywać dane daty.

modele.py

# Importuj moduł modeli
z Django.Modele importu DB
# Zdefiniuj klasę, aby utworzyć tabelę pracowników
Pracownik klasy (modele.Model):
name = modele.Charfield (max_length = 50)
post = modele.Charfield (max_length = 40)
e -mail = modele.E -mail ()
dział = modele.Charfield (max_length = 30)
dołączanie_date = modele.Datefield ()

Uruchom Makemigrations polecenie tworzenia nowej migracji na podstawie zmian wprowadzonych przez modele.

$ Python3 Zarządzaj.Py Makemmigrations FilterApp

Uruchom migrować polecenie do wykonania poleceń SQL i utworzenia wszystkich tabel w bazie danych zdefiniowanych w modele.py plik.

$ Python3 Zarządzaj.Py migruj

Zmodyfikuj zawartość Admin.py Plik z następującą zawartością. Tutaj, Pracownik Klasa modeli jest zarejestrowana za pomocą Rejestr () metoda wyświetlania zapisy pracowników Tabele w deski rozdzielczej administracyjnej Django.

Admin.py

# Importuj moduł administratora
z Django.Administrator importu
# Import Model pracownika
z .Modele importują pracownik
# Zarejestruj model pracownika
Admin.strona.Zarejestruj się (pracownik)

Uruchom następujący adres URL, aby otworzyć stronę logowania administratora Django. Podaj prawidłową nazwę użytkownika i hasło do otwarcia Pulpit nawigacyjny administracji Django Aby uzyskać dostęp do tabel bazy danych.

Włóż dwa lub więcej rekordów pracowników, aby zastosować filtr na danych. Tutaj wstawiono pięć rekordów.

Utwórz szukaj.html plik wewnątrz FilterApp/szablony/ folder z następującym skryptem. Dane z pracownik Tabela zostanie wyświetlona w tym pliku szablonu. Do pętla służy do odczytania zawartości Object_list zmienna, która zostanie przekazana z pliku widoku. Nazwa, post, I dział Wartości pracownicy Tabela zostanie wyświetlona za pomocą listy.

szukaj.html

<br>Samouczek filtra Django<br>

Lista zatrudnionych



    % dla EMP w obiekcie_list %

  1. emp.nazwa (emp.post )


    emp.dział dział



  2. % endfor %

Otworzyć wyświetlenia.py plik z FilterApp folder i zmodyfikuj zawartość pliku za pomocą następującego skryptu. Model i nazwy szablonów są zdefiniowane w skrypcie.

wyświetlenia.py

# Importuj moduł ListView
z Django.wyświetlenia.Ogólny lista importu
# Importuj moduł pracownika
z .Modele importują pracownik
# Moduł importowy Q
z Django.db.Modele import q
# Zdefiniuj klasę do filtrowania danych
Wyszukiwarki klas (ListView):
# Zdefiniuj model
Model = pracownik
# Zdefiniuj szablon
szatple_name = 'Wyszukaj.html '

Zmodyfikuj zawartość URL.py Plik z następującą zawartością. W scenariuszu ''wyszukiwanie„Ścieżka jest zdefiniowana, aby zadzwonić Wyszukiwarki.as_view () metoda, która wyśle ​​wszystkie dane i przefiltrowane dane pracownicy tabela do pliku szablonu.

URL.py

# Importuj moduł administratora
z Django.Administrator importu
# Importuj ścieżkę i uwzględnij moduł
z Django.URLS Import Path, obejmują
# Importuj moduł wyszukiwania
z FilterApp.Wyświetla import Wyszukiwarki
urlpatterns = [
# Zdefiniuj ścieżkę administratora
ścieżka („admin/”, administrator.strona.URL),
# Zdefiniuj ścieżkę wyszukiwania
ścieżka („wyszukiwanie/”, wyszukiwarka.as_view ()),
]

Pojawi się następujące dane wyjściowe bez stosowania filtrowania dla następującego adresu URL.

http: // localhost: 8000/serachemp

Filtruj dane przez proste filtrowanie

Dodaj następujący wiersz na końcu wyświetlenia.py plik do filtrowania rekordów pracownicy Tabela, w której wartość post pole jest 'Księgowy'.

# Zastosuj podstawowe filtrowanie
QuerySet = pracownik.obiekty.filtr (post = „księgowy”)

Następujące wyjście pojawią się po zastosowaniu podstawowego filtrowania.

Filtruj dane z wieloma pól

Dodaj następujący wiersz na końcu wyświetlenia.py plik do filtrowania rekordów pracownicy Tabela, w której wartość dział pole jest 'Ht' I e-mail pole jest [email protected] '.

# Zastosuj filtrowanie za pomocą wielu pól
QuerySet = pracownik.obiekty.filtr (dział = „HR”, e -mail = '[email protected] ')

Następujące dane wyjściowe pojawią się po zastosowaniu wielu filtrowania.

Filtruj dane z obiektem Q

Dodaj następujący wiersz na końcu wyświetlenia.py plik do filtrowania rekordów pracownicy Tabela, w której wartość post pole jest 'Menedżer'lub wartość dział pole jest 'Obroty'.

# Zastosuj filtrowanie za pomocą obiektów Q
QuerySet = pracownik.obiekty.filtr (q (post = „menedżer”) | q (dział = „sprzedaż”))

Następujące dane wyjściowe pojawią się po zastosowaniu filtrowania obiektów Q.

Filtruj dane za pomocą łączenia filtru

Dodaj następujący wiersz na końcu wyświetlenia.py plik do filtrowania rekordów pracownicy Tabela, w której wartość dział pole zostanie najpierw sprawdzone, a jeśli zwróci prawdziwie, to wartość nazwa pole zostanie sprawdzone.

# Zastosuj filtrowanie przez łańcuch
QuerySet = pracownik.obiekty.filtr (dział = „hr”).filtr (name = „Mehrab Hossain”)

Następujące wyjście pojawią się po zastosowaniu łączenia filtra.

Wniosek

Dane można filtrować w Django na wiele sposobów. W tym samouczku wyjaśniono cztery różne sposoby filtrowania, aby zrozumieć podstawy filtrowania Django. Są to proste filtrowanie, wielokrotne filtrowanie, filtrowanie z obiektem Q i łączenie filtra.