Python

Как фильтровать данные в Django?

Как фильтровать данные в Django?
Это очень распространенное требование к веб-приложению отображать данные на веб-странице в зависимости от интересов пользователя. Функция поиска в приложении делает его более удобным для пользователя.  Фреймворк Django имеет встроенный фильтр() метод фильтрации данных из таблиц базы данных. Таблица может содержать много записей, и иногда требуется определение некоторых конкретных данных на основе определенных критериев. Эта задача становится проще, если использовать фильтр () метод по-разному. В этом руководстве будет обсуждаться, как данные из таблицы базы данных могут быть отфильтрованы с использованием метода фильтрации четырьмя различными способами.

Предпосылки

Перед тем, как практиковать примеры этого руководства, вы должны выполнить следующие задачи:

  1. Установите Django версии 3+ на Ubuntu 20+ (желательно)
  2. Создайте проект Django
  3. Запустите сервер Django, чтобы проверить, работает ли сервер правильно или нет.

Настройте приложение Django

А. Выполните следующую команду, чтобы создать приложение Django с именем filterapp.

$ python3 manage.py startapp filterapp

B. Выполните следующую команду, чтобы создать пользователя для доступа к базе данных Django. Если вы создали пользователя раньше, тогда не нужно запускать команду.

$ python3 manage.py создает суперпользователя

C. Добавьте название приложения в INSTALLED_APP часть ру файл.

INSTALLED_APPS = [

'filterapp'
]

D. Создайте папку с именем шаблоны внутри filterapp папку и установите шаблон расположение приложения в ШАБЛОНЫ часть ру файл.

ШАБЛОНЫ = [

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

Создайте модель для таблицы базы данных

Открой модели.ру файл из filterapp папку и добавьте следующий скрипт, чтобы определить структуру сотрудники столы. Работник класс определен для создания таблицы с именем сотрудники с участием имя, должность, электронная почта, отдел, а также Дата вступления поля. Здесь, имя, должность, а также отделение поля будут хранить символьные данные, электронное письмо поле будет хранить адрес электронной почты и Дата вступления поле будет хранить данные даты.

модели.ру

# Модуль импорта моделей
из джанго.модели импорта БД
# Определить класс для создания таблицы сотрудников
класс Сотрудник (модели.Модель):
имя = модели.CharField (max_length = 50)
post = модели.CharField (max_length = 40)
электронная почта = модели.EmailField ()
отдел = модели.CharField (max_length = 30)
joinning_date = модели.DateField ()

Запустить миграция команда для создания новой миграции на основе изменений, внесенных моделями.

$ python3 manage.py makemigrations filterapp

Запустить мигрировать команда для выполнения команд SQL и создания всех таблиц в базе данных, которые определены в модели.ру файл.

$ python3 manage.Py migrate

Измените содержимое админ.ру файл со следующим содержанием. Здесь, работник класс моделей регистрируется с использованием регистр () метод отображения записи сотрудников таблицы на панели администрирования Django.

админ.ру

# Импортировать админ-модуль
из джанго.contrib import admin
# Импортировать модель сотрудника
из .модели импортировать Сотрудник
# Зарегистрировать модель сотрудника
админ.сайт.зарегистрироваться (Сотрудник)

Запустите следующий URL-адрес, чтобы открыть страницу входа администратора Django. Введите действительное имя пользователя и пароль, чтобы открыть Панель управления Django для доступа к таблицам базы данных.

Вставьте две или более записей о сотрудниках, чтобы применить фильтр к данным. Здесь вставлено пять записей.

Создать поиск.html файл внутри filterapp / шаблоны / папка со следующим скриптом. Данные из работник таблица будет отображаться в этом файле шаблона. для цикл используется для чтения содержимого object_list переменная, которая будет передана из файла представления. В имя, должность, а также отделение ценности сотрудники таблица будет отображаться с использованием списка.

поиск.html

<br>Учебное пособие по фильтрам Django<br>

Список сотрудников



    % для emp в object_list%

  1. emp.название (emp.Почта )


    emp.отдел отдел



  2. % endfor%

Открой взгляды.ру файл из filterapp папку и измените содержимое файла с помощью следующего скрипта. Имена модели и шаблона определены в скрипте.

взгляды.ру

# Импортировать модуль ListView
из джанго.взгляды.общий импорт ListView
# Импортировать модуль сотрудников
из .модели импортировать Сотрудник
# Импортировать модуль Q
из джанго.db.модели импорт Q
# Определить класс для фильтрации данных
класс SearchEmployee (ListView):
# Определить модель
model = Сотрудник
# Определить шаблон
template_name = 'поиск.html '

Измените содержимое URL-адреса.ру файл со следующим содержанием. В сценарии 'searchEmp'путь определен для вызова SearchEmployee.as_view () метод, который отправит все данные и отфильтрованные данные сотрудники таблица в файл шаблона.

URL-адреса.ру

# Импортировать админ-модуль
из джанго.contrib import admin
# Импортировать путь и включить модуль
из джанго.путь импорта URL-адресов, включить
# Импортировать модуль SearchEmployee
от filterapp.просмотры импорт SearchEmployee
urlpatterns = [
# Определить путь для администратора
путь ('админ /', админ.сайт.URL-адреса),
# Определить путь для поиска
путь ('searchEmp /', SearchEmployee.as_view ()),
]

Следующий вывод будет отображаться без применения какой-либо фильтрации для следующего URL-адреса.

http: // локальный: 8000 / SerachEmp

Отфильтровать данные с помощью простой фильтрации

Добавьте следующую строку в конец взгляды.ру файл для фильтрации записей сотрудники таблица, где значение Почта поле 'Бухгалтер'.

# Применить базовую фильтрацию
queryset = Сотрудник.объекты.фильтр (сообщение = 'Бухгалтер')

Следующий результат появится после применения базовой фильтрации.

Фильтрация данных с несколькими полями

Добавьте следующую строку в конец взгляды.ру файл для фильтрации записей сотрудники таблица, где значение отделение поле 'HT' а также электронная почта поле "[электронная почта защищена]".

# Применить фильтрацию с несколькими полями
queryset = Сотрудник.объекты.фильтр (отдел = 'HR', электронная почта = '[электронная почта защищена]')

Следующий результат появится после применения множественной фильтрации.

Фильтрация данных с помощью объекта Q

Добавьте следующую строку в конец взгляды.ру файл для фильтрации записей сотрудники таблица, где значение Почта поле 'Менеджер'или стоимость отделение поле 'Продажи'.

# Применяем фильтрацию с помощью объектов Q
queryset = Сотрудник.объекты.фильтр (Q (должность = 'Менеджер') | Q (отдел = 'Продажи'))

Следующий вывод появится после применения фильтрации объекта Q.

Фильтрация данных с помощью цепочки фильтров

Добавьте следующую строку в конец взгляды.ру файл для фильтрации записей сотрудники таблица, где значение отделение сначала будет проверено поле, и если оно вернет истину, тогда значение поля название поле будет проверено.

# Применяем фильтрацию цепочкой
queryset = Сотрудник.объекты.фильтр (отдел = 'HR').filter (name = 'Mehrab Hossain')

Следующий вывод появится после применения цепочки фильтров.

Заключение

Данные можно фильтровать в Django разными способами в зависимости от требований приложения. В этом руководстве были объяснены четыре различных способа фильтрации, чтобы понять основы фильтрации Django. Это простая фильтрация, множественная фильтрация, фильтрация с помощью объекта Q и объединение фильтров.

Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...
Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...
10 лучших игр для Ubuntu
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi...