Предпосылки
Перед тем, как практиковать примеры этого руководства, вы должны выполнить следующие задачи:
- Установите Django версии 3+ на Ubuntu 20+ (желательно)
- Создайте проект Django
- Запустите сервер Django, чтобы проверить, работает ли сервер правильно или нет.
Настройте приложение Django
А. Выполните следующую команду, чтобы создать приложение Django с именем filterapp.
$ python3 manage.py startapp filterappB. Выполните следующую команду, чтобы создать пользователя для доступа к базе данных 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
Учебное пособие по фильтрам Django
Список сотрудников
emp.название (emp.Почта )
emp.отдел отдел
% для emp в object_list%
% 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
Добавьте следующую строку в конец взгляды.ру файл для фильтрации записей сотрудники таблица, где значение Почта поле 'Менеджер'или стоимость отделение поле 'Продажи'.
# Применяем фильтрацию с помощью объектов Qqueryset = Сотрудник.объекты.фильтр (Q (должность = 'Менеджер') | Q (отдел = 'Продажи'))
Следующий вывод появится после применения фильтрации объекта Q.
Фильтрация данных с помощью цепочки фильтров
Добавьте следующую строку в конец взгляды.ру файл для фильтрации записей сотрудники таблица, где значение отделение сначала будет проверено поле, и если оно вернет истину, тогда значение поля название поле будет проверено.
# Применяем фильтрацию цепочкойqueryset = Сотрудник.объекты.фильтр (отдел = 'HR').filter (name = 'Mehrab Hossain')
Следующий вывод появится после применения цепочки фильтров.
Заключение
Данные можно фильтровать в Django разными способами в зависимости от требований приложения. В этом руководстве были объяснены четыре различных способа фильтрации, чтобы понять основы фильтрации Django. Это простая фильтрация, множественная фильтрация, фильтрация с помощью объекта Q и объединение фильтров.