Como filtrar dados em django?

Como filtrar dados em 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 fácil de usar. Django Framework tem um embutido 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 nos critérios específicos. 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 do filtro de quatro maneiras diferentes serão discutidos neste tutorial.

Pré -requisitos

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

  1. Instale a versão Django 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.

Configure um aplicativo Django

A. Execute o seguinte comando para criar um aplicativo django nomeado filterApp.

$ python3 gerencia.Py StartApp filterApp

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

$ python3 gerencia.py createSuperUser

C. Adicione o nome do aplicativo no Instalado_app parte de py arquivo.

Instalado_apps = [
..
'filtrapp'
]

D. Crie uma pasta chamada modelos dentro de filterApp pasta e defina o modelos Localização do aplicativo no MODELOS parte de py arquivo.

Modelos = [

.. .
'Dirs': ['/home/fahmida/django_pro/filterapp/modelos'],
.. .
,
]

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. Funcionário A classe é definida para criar uma tabela chamada funcionários com nome, postagem, e -mail, departamento, e Data de ingresso Campos. Aqui, nome, post, e departamento Os campos armazenarão dados de caracteres, o e-mail o campo armazenará o endereço de e -mail e o Data de ingresso O campo armazenará dados de data.

modelos.py

# Módulo de modelos de importação
de Django.Modelos de importação de banco de dados
# Defina a classe para criar a tabela de funcionários
funcionário da classe (modelos.Modelo):
nome = modelos.Charfield (max_length = 50)
post = modelos.Charfield (max_length = 40)
email = modelos.Emailfield ()
Departamento = Modelos.Charfield (max_length = 30)
JONNING_DATE = Models.DateField ()

Execute o Maquemigrações comando para criar uma nova migração com base nas alterações feitas pelos modelos.

$ python3 gerencia.py makemigrações filtrapp

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 gerencia.py migrar

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

admin.py

# Importar módulo de administrador
de Django.Contrible Import Admin
# Importar modelo de funcionário
de .modelos importam funcionários
# Registro modelo de funcionário
admin.site.registro (funcionário)

Execute o seguinte URL para abrir a página de login de administrador do Django. Forneça o nome de usuário e a senha válidos para abrir o Painel da administração do Django Para acessar as tabelas de 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/modelos/ pasta com o seguinte script. Os dados do funcionário A tabela será exibida neste arquivo de modelo. para O loop é usado para ler o conteúdo do object_list variável que será passada do arquivo de visualização. O nome, post, e departamento valores do funcionários A tabela será exibida usando a lista.

procurar.html

<br>Tutorial de 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 de modelo e modelo são definidos no script.

Visualizações.py

# Módulo ListView de importação
de Django.Visualizações.Importação genérica ListView
# Importar módulo de funcionário
de .modelos importam funcionários
# Módulo q de importação
de Django.dB.Modelos Importar q
# Defina classe para filtrar dados
classe searchemployee (listView):
# Defina modelo
Model = funcionário
# Defina modelo
template_name = 'pesquisa.html '

Modificar o conteúdo do URLs.py Arquivo com o seguinte conteúdo. No roteiro, o 'Searchemp'O caminho é definido para chamar o SearchEmployee.AS_VIEW () método que enviará todos os dados e os dados filtrados do funcionários tabela para o arquivo de modelo.

URLs.py

# Importar módulo de administrador
de Django.Contrible Import Admin
# Importar caminho e incluir módulo
de Django.URLs Importar caminho, inclua
# Importar módulo de searchemployee
de filterApp.Visualizações importam searchemployee
urlpatterns = [
# Defina o caminho para o administrador
caminho ('admin/', admin.site.URLs),
# Defina o caminho para a pesquisa
Path ('Searchemp/', SearchEmployee.AS_VIEW ()),
]

A saída a seguir aparecerá sem aplicar qualquer filtragem 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 tabela onde o valor do publicar Campo é 'Contador'.

# Aplique filtragem básica
Queryset = funcionário.objetos.filtro (post = 'contador')

A saída a seguir 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 tabela onde o valor do departamento Campo é 'Ht' e o e-mail campo é '[email protected] '.

# Aplique filtragem com vários campos
Queryset = funcionário.objetos.filtro (departamento = 'hr', email = '[email protected] ')

A saída a seguir aparecerá após a aplicação de múltiplas filtragens.

Filtrar dados com objeto Q

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

# Aplique filtragem usando objetos Q
Queryset = funcionário.objetos.filtro (q (post = 'gerente') | q (departamento = 'vendas')))

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

Filtrar dados usando o encadeamento de filtro

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

# Aplique a filtragem encadeando
Queryset = funcionário.objetos.filtro (departamento = 'hr').filtro (nome = 'mehrab hossain')

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

Conclusão

Os dados podem ser filtrados em Django de várias maneiras com base nos requisitos de aplicativo. Quatro maneiras diferentes de filtrar foram explicadas neste tutorial para entender o básico da filtragem de Django. São filtragem simples, filtragem múltipla, filtragem com objeto Q e encadeamento de filtro.