НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ

Django Підручник

Django Головна Django Інтро Django Почати навчання Створення віртуального середовища Встановити Django Django Створити проєкт Django Створити додаток Django Представлення Django URL Django Шаблони Django Моделі Django Вставити дані Django Оновити дані Django Видалити дані Django Оновити модель

Відображення даних

Підготовка шаблону і представлення Додати посилання на деталі Додати головний шаблон Додати головну Index сторінку Django 404 Шаблон Додати Test перегляд

Admin

Django Admin Створити користувача Включити учасника Відображення списку установок Оновити учасників Додати учасників Видалити учасників

Django Синтаксис

Django Змінні Django Теги Django If Else Django Цикл For Django Коментар Django Include

QuerySets

QuerySet Інтро QuerySet Get QuerySet Фільтр QuerySet Order By

Статичні файли

Додати статичні файли Встановити WhiteNoise Зібрати статичні файли Додати глобальні статичні файли Додати стилі до проєкту

PostgreSQL

PostgreSQL Інтро Створити обліковий запис AWS Створити бази даних у RDS Підключитися до бази даних Додати учасників

Розгортання Django

Elastic Beanstalk (EB) Створити requirements.txt Створити django.config Створити .zip файл Розгорнути із EB Оновити проєкт

Більше Django

Додати Slug Field Додати Bootstrap 5

Django Довідники

Довідник тегів шаблону Довідник фільтра Довідник Пошуку полів

Django Вправи

Django Компілятор Django Вправи Django Вікторина Django Сервер Django Сертифікат

Django. Уроки для початківців

En Es De

Django QuerySet - Фільтр


QuerySet Фільтр

Метод filter() використовується для фільтрації пошуку та дозволяє повертати лише ті рядки, які відповідають пошуковому терміну.

Як ми дізналися в попередньому розділі, ми можемо фільтрувати такі імена полів:

Приклад

Повертати лише ті записи, де є ім’я 'Emil':

mydata = Member.objects.filter(firstname='Emil').values()
Виконати приклад »

У SQL наведена вище інструкція буде написана так:

SELECT * FROM members WHERE firstname = 'Emil';

AND

Метод filter() приймає аргументи як **kwargs (аргументи ключового слова), тому ви можете фільтрувати більше ніж одне поле, розділяючи їх комою.

Приклад

Повернути записи, де прізвище "Refsnes" та id 2:

mydata = Member.objects.filter(lastname='Refsnes', id=2).values()
Виконати приклад »

У SQL наведена вище інструкція буде написана так:

SELECT * FROM members WHERE lastname = 'Refsnes' AND id = 2;

OR

Повернути записи, де ім’я Emil або ім’я Tobias (що означає: повернення записів, які відповідають будь-якому запиту, не обов’язково обом) не так просто, як приклад AND вище.

Ми можемо використовувати кілька методів filter(), розділених символом вертикальної лінії |. Результати зливаються в одну модель.

Приклад

Повертає записи, у яких є ім’я "Emil" або Tobias":

mydata = Member.objects.filter(firstname='Emil').values() | Member.objects.filter(firstname='Tobias').values()
Виконати приклад »

Іншим поширеним методом є імпорт і використання виразів Q:

Приклад

Повертає записи, у яких є ім’я "Emil" або Tobias":

from django.http import HttpResponse
from django.template import loader
from .models import Member
from django.db.models import Q

def testing(request):
  mydata = Member.objects.filter(Q(firstname='Emil') | Q(firstname='Tobias')).values()
  template = loader.get_template('template.html')
  context = {
    'mymembers': mydata,
  }
  return HttpResponse(template.render(context, request))
Виконати приклад »

У SQL наведена вище інструкція буде написана так:

SELECT * FROM members WHERE firstname = 'Emil' OR firstname = 'Tobias';

Field lookups (Пошук полів)

Django має власний спосіб визначення інструкцій SQL і умов WHERE.

Щоб уточнити пропозицію where в Django, використовуйте "Field lookups" ("Пошук полів").

Field lookups – це ключові слова, які представляють певні ключові слова SQL.

Приклад:

Use the __startswith keyword:

.filter(firstname__startswith='L');

Це те саме, що SQL інструкція:

WHERE firstname LIKE 'L%'

Наведена вище інструкція поверне записи, де ім’я починається з 'L'.

Синтаксис пошуку полів

Усі ключові слова пошуку полів мають бути вказані разом із назвою поля, за якою слідують два (!) символи підкреслення та ключове слово.

У нашій моделі Member інструкція буде написана так:

Приклад

Повернути записи, де firstname починається з літери 'L':

mydata = Member.objects.filter(firstname__startswith='L').values()
Виконати приклад »

Довідник Field Lookups (пошук полів)

Список усіх ключових слів Field Lookups:

Ключове слово Опис
contains Містить фразу
icontains Те саме, що contains, але без урахування регістру
date Означає дату
day Означає дату (день місяця, 1-31) (для дат)
endswith Закінчується на
iendswith Те саме, що endswidth, але без урахування регістру
exact Точний збіг
iexact Те саме, що exact, але без урахування регістру
in Відповідає одному зі значень
isnull Відповідає значенням NULL
gt Більше ніж
gte Більше ніж або дорівнює
hour Означає годину (для дат і часу)
lt Менше ніж
lte Менше ніж або дорівнює
minute Означає хвилину (для дат і часу)
month Збігається з місяцем (для дат)
quarter Означає квартал року (1-4) (для дат)
range Збіг між
regex Відповідає регулярному виразу
iregex Те саме, що й регулярний вираз, але не враховує регістр
second Означає секунди (для дат і часу)
startswith Починається з
istartswith Те саме, що startswith, але без урахування регістру
time Означає час (для дат і часу)
week Відповідає номеру тижня (1-53) (для дат)
week_day Відповідає дню тижня (1-7) 1 – неділя
iso_week_day Відповідає дню тижня за стандартом ISO 8601 (1-7). 1 – понеділок
year Збігається з роком (для дат)
iso_year Відповідає року ISO 8601 (для дат)


Коментарі