Jak używać QuerySet w Django

Jak używać QuerySet w Django
Większość aplikacji internetowych jest teraz zaimplementowana z bazą danych. QuerySet jest używany w aplikacji Django do pobierania rekordów poprzez filtrowanie, krojenie lub zamawianie tabeli bazy danych bez zmiany oryginalnych danych. Model użył Django do utworzenia tabeli w bazie danych. Zatem znajomość korzystania z modelu w Django jest niezbędna do zrozumienia użycia zapytania. Główną funkcją QuerySet jest iterowanie rekordów tabel bazy danych poprzez przekształcenie ich w zapytania SQL. Można go używać z wiersza poleceń Python lub pisania skryptu Pythona, aby wyświetlić wyjście przeglądarki. Zastosowania QuerySet do pobierania danych z tabeli bazy danych na różne sposoby zostały wyjaśnione w tym samouczku.

Wymagania wstępne:

Przed ćwiczeniem scenariusza 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:

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

$ Python3 Zarządzaj.PY StartApp QueryApp

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

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

Instalowane_apps = [

„QueryApp”
]

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

Szablony = [

… .
„Dirs”: ['/home/fahmida/django_pro/queryApp/Templates']],
… .
,
]

Utwórz model tabeli bazy danych:

Otworzyć modele.py plik z QueryApp folder i dodaj następujący skrypt, aby zdefiniować strukturę produkty tabele. Produkt Klasa jest zdefiniowana w celu utworzenia tabeli o nazwie produkty z nazwa, typ, marka, I cena Pola. Tutaj, Nazwa, typ, I marka pola będą przechowywać dane znaków i cena pole będzie przechowywać dane liczb całkowitych.

modele.py

# Importuj moduł modeli
z Django.Modele importu DB
# Zdefiniuj klasę, aby utworzyć tabelę produktów
produkt klasowy (modele.Model):
name = modele.Charfield (max_length = 100)
type = modele.Charfield (max_length = 30)
marka = modele.Charfield (max_length = 50)
cena = modele.Integerfield ()

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

$ Python3 Zarządzaj.PY Makemigrations QueryApp

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, Produkty modeli CLASs jest zarejestrowany za pomocą rejestr() metoda wyświetlania produkty Tabele w deski rozdzielczej administracyjnej Django.

Admin.py

# Importuj moduł administratora
z Django.Administrator importu
# Importuj model produktu
z .modele importuj produkt
# Zarejestruj model produktu
Admin.strona.Zarejestruj się (produkt)

Utwórz plik szablonu o nazwie Lista produktów.html w środku queryApp/szablony/ z następującym skryptem. Ten skrypt wyświetli wszystkie dane produkty Tabela w formie tabelarycznej z polem wyszukiwania. Użytkownik będzie mógł przeszukać poszczególne rekordy z tabeli produktów za pomocą formularza wyszukiwania. Do pętla jest używana w skrypcie do iteracji danych przekazywanych z wyświetlenia.py plik.

Lista produktów.html



<br>Samouczek Django QuerySet<br>



Wyszukiwanie produktu



% csrf_token %
Produkt wyszukiwania:







% dla produktu w obiekcie_list %



% endfor %
IDNazwaMarkaCena
produkt.ID produkt.nazwa produkt.markastyle = "text-align: right"> $ produkt.cena



Zmodyfikuj zawartość wyświetlenia.py Plik z następującym skryptem. Model i nazwy szablonów są zdefiniowane w Lista produktów klasa. get_querySet () Metoda klasy jest zdefiniowana w skrypcie w celu filtrowania danych na podstawie zawartości przesłanej przez pole wyszukiwania szablonu. Produkt.obiekty.Wszystko() Metoda zwraca wszystkie zapisy produkty tabela. wniosek.DOSTAWAĆ.Klucze() Metoda jest używana w skrypcie do sprawdzenia, czy dowolne dane są przesyłane przez formularz wyszukiwania. Jeśli ta metoda zwróci PRAWDA, a później wniosek.DOSTAWAĆ.Get („src”) Metoda służy do sprawdzenia, czy przesłana wartość jest pusta, czy nie. Jeśli ta metoda zwróci wartość nieustronną, wartość będzie przechowywana w zmiennej, Słowo kluczowe, i zostanie użyty do filtrowania danych na podstawie marka I typ pola z produkty tabela.

wyświetlenia.py

# Importuj moduł ListView
z Django.wyświetlenia.Ogólny lista importu
# Importuj moduł produktu
z .modele importuj produkt
# Moduł importowy Q
z Django.db.Modele import q
# Zdefiniuj klasę do zapytań danych
Lista produktów klasowych (ListView):
# Zdefiniuj model
model = produkt
# Zdefiniuj szablon
szatple_name = 'lista produktów.html '
def get_queryset (self):
# Ustaw domyślny zestaw zapytania
QuerySet = Produkt.obiekty.Wszystko()
# Sprawdź, czy wartość formularza jest przesłana lub nie
Jeśli ja.wniosek.DOSTAWAĆ.Klucze():
# Sprawdź słowo kluczowe wyszukiwania
Jeśli ja.wniosek.DOSTAWAĆ.Get („src”) != ":
słowo kluczowe = ja.wniosek.DOSTAWAĆ.Get („src”)
# Ustaw zestaw zapytania na podstawie słowa kluczowego wyszukiwania
QuerySet = Produkt.obiekty.Filtr (q (marki = słowo kluczowe.capitize ()) | Q (type = słowo kluczowe.skapitalizować()))
return QuerySet

Zmodyfikuj zawartość URL.py Plik z następującym skryptem. W scenariuszu ''SearchPro/'ścieżka jest zdefiniowana, aby wywołać Lista produktów.as_view () metoda, która wyśle ​​wszystkie dane i przefiltrowane dane produkty tabela do pliku szablonu.

URL.py

# Importuj moduł administratora
z Django.Administrator importu
# Importuj ścieżkę i uwzględnij moduł
z Django.URL ścieżki importu
# Importuj moduł wyszukiwania
od QueryApp.Wyświetla import Lista produktów
urlpatterns = [
# Zdefiniuj ścieżkę administratora
ścieżka („admin/”, administrator.strona.URL),
# Zdefiniuj ścieżkę do wyszukiwania produktu
ścieżka („SearchPro/”, lista produktów.as_view ()),

Dodaj rekordy do tabeli:

Otwórz stronę administracyjną Django i dodaj kilka rekordów do produkty Tabela, aby zastosować następnie QuerySet. Tutaj wstawiono pięć rekordów.

Wszystkie rekordy produktów z polem wyszukiwania zostaną wyświetlone w przeglądarce po wykonaniu następującego adresu URL.

http: // localhost: 8000/SearchPro


Wszystkie produkty szamponu wyświetlone, jeśli typ produktu ”szampon„Zostanie wyszukiwany w polu wyszukiwania.

Produkty z proszku mlecznego Świeże marka zostanie wyświetlona, ​​jeśli marka produktu ”świeży„Zostanie wyszukiwany w polu wyszukiwania.

Wniosek:

Sposób filtrowania danych prostej tabeli bazy danych za pomocą QuerySet wyjaśnił w tym samouczku. Dane można filtrować na różne sposoby. Czytelnicy zrozumieją za pomocą zapytania do filtrowania lub wyszukiwania danych w przeglądarce po przeczytaniu tego samouczka.