Pitão

Como filtrar dados no Django?

Como filtrar dados no Django?
É um requisito muito comum para o aplicativo da web exibir dados na página da web com base no interesse do usuário. O recurso de pesquisa do aplicativo o torna mais amigável.  O framework Django tem um built-in filtro() método para filtrar dados das tabelas de banco de dados. Uma tabela pode conter muitos registros e, às vezes, determinar alguns dados específicos são necessários com base em critérios particulares. Esta tarefa se torna mais fácil usando o filtro() método de maneiras diferentes. Como os dados de uma tabela de banco de dados podem ser filtrados usando o método de filtro de quatro maneiras diferentes será discutido neste tutorial.

Pré-requisitos

Antes de praticar os exemplos deste tutorial, você deve concluir as seguintes tarefas:

  1. Instale o Django versão 3+ no Ubuntu 20+ (de preferência)
  2. Crie um projeto Django
  3. Execute o servidor Django para verificar se o servidor está funcionando corretamente ou não.

Configurar um aplicativo Django

UMA. Execute o seguinte comando para criar um aplicativo Django chamado filterapp.

$ python3 manage.py startapp filterapp

B. Execute o seguinte comando para criar o usuário para acessar o banco de dados Django. Se você já criou o usuário antes, não precisa executar o comando.

$ python3 manage.py cria superusuário

C. Adicione o nome do aplicativo no INSTALLED_APP parte de py Arquivo.

INSTALLED_APPS = [

'filterapp'
]

D. Crie uma pasta chamada modelos dentro de filterapp pasta e definir o modelos localização do aplicativo no MODELOS parte de py Arquivo.

MODELOS = [

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

Crie um modelo para a tabela de banco de dados

Abra o modelos.py arquivo do filterapp pasta e adicione o seguinte script para definir a estrutura de funcionários mesas. Empregado classe é definida para criar uma tabela chamada funcionários com nome, postagem, e-mail, departamento, e Data de ingresso Campos. Aqui, nome, postagem, e departamento campos irão armazenar dados de caracteres, o o email campo irá armazenar o endereço de e-mail e o Data de ingresso campo irá armazenar dados de data.

modelos.py

# Módulo de importação de modelos
de django.modelos de importação db
# Defina a classe para criar a tabela de funcionários
classe Funcionário (modelos.Modelo):
nome = modelos.CharField (max_length = 50)
post = modelos.CharField (max_length = 40)
email = modelos.EmailField ()
departamento = modelos.CharField (max_length = 30)
joinning_date = models.DateField ()

Execute o fazer migrações comando para criar uma nova migração com base nas mudanças feitas pelos modelos.

$ python3 manage.py makemigrations filterapp

Execute o migrar comando para executar os comandos SQL e criar todas as tabelas no banco de dados que são definidas no modelos.py Arquivo.

$ python3 manage.py migrar

Modifique o conteúdo do admin.py arquivo com o seguinte conteúdo. Aqui, o empregado classe dos modelos é registrada usando o registro() método para exibir o registros de funcionários tabelas no painel de administração do Django.

admin.py

# Importar módulo de administração
de django.contrib import admin
# Importar modelo de funcionário
a partir de .modelos de importação de funcionários
# Registrar modelo de funcionário
admin.local.registrar (empregado)

Execute a seguinte URL para abrir a página de login do administrador do Django. Forneça o nome de usuário e a senha válidos para abrir o Django Administration Dashboard para acessar as tabelas do banco de dados.

Insira dois ou mais registros de funcionários para aplicar o filtro nos dados. Aqui, cinco registros são inseridos.

Crie o procurar.html arquivo dentro do filterapp / templates / pasta com o seguinte script. Os dados do empregado a tabela será exibida neste arquivo de modelo. para loop é usado para ler o conteúdo do object_list variável que será passada do arquivo de visão. O nome, postagem, e departamento valores do funcionários a tabela será exibida usando a lista.

procurar.html

<br>Tutorial do Filtro Django<br>

Lista de empregados



    % para emp em object_list%

  1. emp.nome (emp.publicar )


    emp.departamento departamento



  2. % endfor%

Abra o Visualizações.py arquivo do filterapp pasta e modifique o conteúdo do arquivo com o seguinte script. Os nomes dos modelos e modelos são definidos no script.

Visualizações.py

# Importar módulo ListView
de django.Visualizações.importação genérica ListView
# Módulo de importação de funcionários
a partir de .modelos de importação de funcionários
# Importar módulo Q
de django.db.modelos de importação Q
# Definir classe para filtrar dados
classe SearchEmployee (ListView):
# Definir modelo
model = Employee
# Definir modelo
template_name = 'search.html '

Modifique o conteúdo do urls.py arquivo com o seguinte conteúdo. No script, o 'searchEmp'caminho é definido para chamar o SearchEmployee.as_view () método que irá enviar todos os dados e os dados filtrados do funcionários tabela para o arquivo de modelo.

urls.py

# Importar módulo de administração
de django.contrib import admin
# Importar caminho e incluir módulo
de django.caminho de importação de urls, incluir
# Importar módulo SearchEmployee
do filterapp.visualizações importar SearchEmployee
urlpatterns = [
# Defina o caminho para o administrador
caminho ('admin /', admin.local.urls),
# Defina o caminho para a pesquisa
caminho ('searchEmp /', SearchEmployee.as_view ()),
]

O resultado a seguir aparecerá sem aplicar qualquer filtro para o seguinte URL.

http: // localhost: 8000 / SerachEmp

Filtrar dados por filtragem simples

Adicione a seguinte linha no final do Visualizações.py arquivo para filtrar os registros do funcionários mesa onde o valor do publicar campo é 'Contador'.

# Aplicar filtragem básica
queryset = Employee.objetos.filtro (post = 'Contador')

A seguinte saída aparecerá após a aplicação da filtragem básica.

Filtrar dados com vários campos

Adicione a seguinte linha no final do Visualizações.py arquivo para filtrar os registros do funcionários mesa onde o valor do departamento campo é 'HT' e o e-mail campo é '[email protegido]'.

# Aplicar filtragem com vários campos
queryset = Employee.objetos.filtro (departamento = 'RH', email = '[email protegido]')

A seguinte saída aparecerá após a aplicação de vários filtros.

Filtrar dados com objeto Q

Adicione a seguinte linha no final do Visualizações.py arquivo para filtrar os registros do funcionários mesa onde o valor do publicar campo é 'Gerente'ou o valor do departamento campo é 'Vendas'.

# Aplicar filtragem usando objetos Q
queryset = Employee.objetos.filtro (Q (post = 'Gerente') | Q (departamento = 'Vendas'))

A seguinte saída aparecerá após a aplicação da filtragem de objeto Q.

Filtrar dados usando o encadeamento de filtros

Adicione a seguinte linha no final do Visualizações.py arquivo para filtrar os registros do funcionários mesa onde o valor do departamento campo será verificado primeiro e se retornar verdadeiro, então o valor do nome campo será verificado.

# Aplicar filtragem por encadeamento
queryset = Employee.objetos.filtro (departamento = 'RH').filtro (nome = 'Mehrab Hossain')

A seguinte saída aparecerá após a aplicação do encadeamento de filtro.

Conclusão

Os dados podem ser filtrados no Django de várias maneiras com base nos requisitos do aplicativo. Quatro maneiras diferentes de filtragem foram explicadas neste tutorial para entender os fundamentos da filtragem do Django. Estes são filtragem simples, filtragem múltipla, filtragem com objeto Q e encadeamento de filtro.

Instale o último jogo de estratégia OpenRA no Ubuntu Linux
OpenRA é um motor de jogo de estratégia em tempo real Libre / Free que recria os primeiros jogos Westwood como o clássico Command & Conquer: Red Alert...
Instale o emulador Dolphin mais recente para Gamecube e Wii no Linux
O Dolphin Emulator permite que você jogue seus jogos de Gamecube e Wii escolhidos em computadores pessoais Linux (PC). Sendo um emulador de jogo disp...
Como usar o GameConqueror Cheat Engine no Linux
O artigo cobre um guia sobre como usar o mecanismo de cheat GameConqueror no Linux. Muitos usuários que jogam no Windows costumam usar o aplicativo “C...