Python

Comment filtrer les données dans Django?

Comment filtrer les données dans Django?
Il est très courant que l'application Web affiche des données sur la page Web en fonction de l'intérêt de l'utilisateur. La fonction de recherche de l'application la rend plus conviviale.  Le framework Django a un filtre() méthode pour filtrer les données des tables de la base de données. Une table peut contenir de nombreux enregistrements et parfois la détermination de certaines données spécifiques est requise en fonction de critères particuliers. Cette tâche devient plus facile en utilisant le filtre() méthode de différentes manières. Comment les données d'une table de base de données peuvent être filtrées à l'aide de la méthode de filtrage de quatre manières différentes seront abordées dans ce didacticiel.

Conditions préalables

Avant de mettre en pratique les exemples de ce didacticiel, vous devez effectuer les tâches suivantes :

  1. Installez la version Django 3+ sur Ubuntu 20+ (de préférence)
  2. Créer un projet Django
  3. Exécutez le serveur Django pour vérifier que le serveur fonctionne correctement ou non.

Configurer une application Django

UNE. Exécutez la commande suivante pour créer une application Django nommée application de filtrage.

$ python3 gérer.py startapp filterapp

B. Exécutez la commande suivante pour créer l'utilisateur permettant d'accéder à la base de données Django. Si vous avez déjà créé l'utilisateur, vous n'avez pas besoin d'exécuter la commande.

$ python3 gérer.py createsuperuser

C. Ajoutez le nom de l'application dans le INSTALLED_APP partie de la py déposer.

INSTALLED_APPS = [

'filtrerapp'
]

ré. Créer un dossier nommé modèles à l'intérieur de application de filtrage dossier et définissez le des modèles emplacement de l'application dans le MODÈLES partie de la py déposer.

MODÈLES = [

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

Créer un modèle pour la table de base de données

Ouvrez le des modèles.py fichier de la application de filtrage dossier et ajoutez le script suivant pour définir la structure de des employés les tables. Employé la classe est définie pour créer une table nommée des employés avec nom, poste, e-mail, département, et date d'inscription des champs. Ici, nom, poste, et département les champs stockeront les données de caractère, le e-mail champ stockera l'adresse e-mail et le date d'inscription le champ stockera les données de date.

des modèles.py

# Module d'importation de modèles
de Django.modèles d'importation de base de données
# Définir la classe pour créer la table des employés
classe Employé(modèles.Modèle):
nom = modèles.CharField(max_length=50)
poste = modèles.CharField(max_length=40)
email = modèles.Champ de messagerie()
département = modèles.CharField(max_length=30)
joinning_date = modèles.Champ de date()

Exécutez le faire des migrations commande pour créer une nouvelle migration basée sur les modifications apportées par les modèles.

$ python3 gérer.py makemigrations filterapp

Exécutez le émigrer pour exécuter les commandes SQL et créer toutes les tables de la base de données définies dans le des modèles.py déposer.

$ python3 gérer.py migrer

Modifier le contenu de la administrateur.py fichier avec le contenu suivant. Ici, l'employé classe des modèles est enregistrée en utilisant le registre() méthode pour afficher le dossiers des employés tables dans le tableau de bord d'administration Django.

administrateur.py

# Importer le module d'administration
de Django.administrateur d'importation de contribution
# Importer le modèle d'employé
de .modèles import Employé
# Enregistrer le modèle d'employé
administrateur.placer.s'inscrire (employé)

Exécutez l'URL suivante pour ouvrir la page de connexion de l'administrateur Django. Fournissez le nom d'utilisateur et le mot de passe valides pour ouvrir le Tableau de bord d'administration de Django pour accéder aux tables de la base de données.

Insérez deux ou plusieurs enregistrements d'employés pour appliquer le filtre sur les données. Ici cinq enregistrements sont insérés.

Créer le rechercher.html fichier à l'intérieur du filterapp/modèles/ dossier avec le script suivant. Les données du employé le tableau sera affiché dans ce fichier modèle. pour boucle est utilisée pour lire le contenu de la liste_objets variable qui sera passée du fichier de vue. le nom, poste, et département valeurs de la des employés tableau sera affiché en utilisant la liste.

rechercher.html

<br>Tutoriel sur les filtres Django<br>

Liste des employés



    % pour emp dans object_list %

  1. emp.Nom ( emp.Publier )


    emp.département département



  2. % fin pour %

Ouvrez le vues.py fichier de la application de filtrage dossier et modifiez le contenu du fichier avec le script suivant. Les noms de modèle et de modèle sont définis dans le script.

vues.py

# Importer le module ListView
de Django.vues.importation générique ListView
# Importer le module Employé
de .modèles import Employé
# Importer le module Q
de Django.db.modèles d'importation Q
# Définir la classe pour filtrer les données
classe SearchEmployee (ListView):
# Définir le modèle
modèle = Employé
# Définir le modèle
template_name = 'recherche.html'

Modifier le contenu de la URL.py fichier avec le contenu suivant. Dans le script, le 'rechercheEmp' chemin est défini pour appeler le RechercheEmployé.as_view() méthode qui enverra toutes les données et les données filtrées du des employés table dans le fichier modèle.

URL.py

# Importer le module d'administration
de Django.administrateur d'importation de contribution
# Chemin d'importation et module d'inclusion
de Django.chemin d'importation des URL, inclure
# Importer le module SearchEmployee
de filterapp.vues importer SearchEmployee
urlpatterns = [
# Définir le chemin pour l'administrateur
chemin('admin/', admin.placer.URL),
# Définir le chemin de recherche
path('searchEmp/', SearchEmployee.as_view()),
]

La sortie suivante apparaîtra sans appliquer de filtrage pour l'URL suivante.

http://localhost:8000/SerachEmp

Filtrer les données par filtrage simple

Ajoutez la ligne suivante à la fin du vues.py fichier pour filtrer les enregistrements des des employés table où la valeur de la Publier le champ est 'Comptable'.

# Appliquer un filtrage de base
jeu de requêtes = employé.objets.filter(post ='Comptable')

La sortie suivante apparaîtra après l'application du filtrage de base.

Filtrer les données avec plusieurs champs

Ajoutez la ligne suivante à la fin du vues.py fichier pour filtrer les enregistrements des des employés table où la valeur de la département le champ est 'HT' et le courriel le champ est '[email protégé]'.

# Appliquer un filtrage avec plusieurs champs
jeu de requêtes = employé.objets.filter(department='HR', email='[email protected]')

La sortie suivante apparaîtra après l'application de plusieurs filtrages.

Filtrer les données avec l'objet Q

Ajoutez la ligne suivante à la fin du vues.py fichier pour filtrer les enregistrements des des employés table où la valeur de la Publier le champ est 'Directeur' ou la valeur du département le champ est 'Ventes'.

# Appliquer le filtrage en utilisant des objets Q
jeu de requêtes = employé.objets.filter( Q(post='Manager') | Q(department='Ventes'))

La sortie suivante apparaîtra après l'application du filtrage d'objet Q.

Filtrer les données à l'aide du chaînage de filtres

Ajoutez la ligne suivante à la fin du vues.py fichier pour filtrer les enregistrements des des employés table où la valeur de la département le champ sera vérifié en premier et s'il retourne vrai alors la valeur du Nom le champ sera vérifié.

# Appliquer le filtrage par chaînage
jeu de requêtes = employé.objets.filtre(service='RH').filter(nom='Mehrab Hossain')

La sortie suivante apparaîtra après l'application du chaînage de filtre.

Conclusion

Les données peuvent être filtrées dans Django de plusieurs manières en fonction des exigences de l'application. Quatre façons différentes de filtrer ont été expliquées dans ce tutoriel pour comprendre les bases du filtrage Django. Il s'agit du filtrage simple, du filtrage multiple, du filtrage avec objet Q et du chaînage des filtres.

Comment installer et jouer à Doom sur Linux
Introduction à Doom La série Doom est née dans les années 90 après la sortie du Doom original. Ce fut un succès instantané et à partir de ce moment-là...
Vulkan pour les utilisateurs Linux
Avec chaque nouvelle génération de cartes graphiques, nous voyons les développeurs de jeux repousser les limites de la fidélité graphique et se rappro...
OpenTTD contre Simutrans
Créer votre propre simulation de transport peut être amusant, relaxant et extrêmement attrayant. C'est pourquoi vous devez vous assurer que vous essay...