Comment filtrer les données à Django?

Comment filtrer les données à Django?
Il s'agit d'une exigence très courante pour l'application Web d'afficher des données sur la page Web en fonction de l'intérêt de l'utilisateur. La fonction de recherche de l'application le rend plus convivial. Django Framework a un filtre() Méthode pour filtrer les données des tables de base de données. Un tableau peut contenir de nombreux enregistrements et parfois déterminer certaines données spécifiques sont requises en fonction des 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 du filtre de quatre manières différentes seront discutées dans ce tutoriel.

Conditions préalables

Avant de pratiquer les exemples de ce tutoriel, vous devez effectuer les tâches suivantes:

  1. Installez la version 3+ de Django 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

UN. Exécutez la commande suivante pour créer une application django nommée filtrer.

$ python3 gérer.py startApp FilterApp

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

$ python3 gérer.py créeuperuser

C. Ajouter le nom de l'application dans le Installé_app partie de la py déposer.

Installé_apps = [

'FilterApp'
]]

D. Créer un dossier nommé modèles à l'intérieur de filtrer dossier et définissez le modèle Emplacement de l'application dans le Modèles partie de la py déposer.

Modèles = [

… .
'DIRS': ['/ home / fahmida / django_pro / filterApp / modèles']],
… .
,
]]

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

Ouvrir le des modèles.py fichier à partir du filtrer dossier et ajoutez le script suivant pour définir la structure de employés les tables. Employé La classe est définie pour créer un tableau nommé employés avec nom, publication, e-mail, département, et date d'inscription des champs. Ici, Nom, Publier, et département Les champs stockeront les données des caractères, le e-mail le champ stockera l'adresse e-mail et le date d'inscription Le champ stockera les données de date.

des modèles.py

# Module des modèles d'importation
De Django.Modèles d'importation DB
# Définir la classe pour créer des employés table
Employé de classe (modèles.Modèle):
nom = modèles.Charfield (max_length = 50)
Post = modèles.Charfield (max_length = 40)
Email = modèles.E-mail Field ()
département = modèles.Charfield (max_length = 30)
joining_date = modèles.Datefield ()

Courir le makemigrations Commande pour créer une nouvelle migration basée sur les modifications apportées par les modèles.

$ python3 gérer.py makemigrations filterApp

Courir le émigrer commande 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 du administrer.py fichier avec le contenu suivant. Ici, l'employé La classe des modèles est enregistrée en utilisant le registre() Méthode pour afficher le Dossiers des employés Tables du tableau de bord de l'administration Django.

administrer.py

# Importer le module d'administration
De Django.contriber d'importation administrateur
# Importer le modèle d'employé
depuis .Les modèles importent un employé
# Enregistrer le modèle des employés
administrer.placer.s'inscrire (employé)

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

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

Créer le recherche.html fichier à l'intérieur du FilterApp / Templates / dossier avec le script suivant. Les données du employé La table sera affichée dans ce fichier de modèle. pour la boucle est utilisée pour lire le contenu du objet_list variable qui sera transmise à partir du fichier d'affichage. Le Nom, Publier, et département valeurs du employés La table sera affichée en utilisant la liste.

recherche.html

<br>Tutoriel de filtre Django<br>

Liste des employés



    % pour EMP dans object_list%

  1. emp.nom (emp.poste )


    emp.Département Département



  2. % end pour%

Ouvrir le vues.py fichier à partir du filtrer 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 des employés
depuis .Les modèles importent un employé
# Module d'importation Q
De Django.db.Modèles import Q
# Définir la classe pour filtrer les données
Class SearchEmployee (ListView):
# Définir le modèle
modèle = employé
# Définir le modèle
Template_name = 'Recherche.html '

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

URL.py

# Importer le module d'administration
De Django.contriber d'importation administrateur
# Importer un chemin et inclure le module
De Django.Chemin d'importation des URL, inclure
# Importer le module de recherche de recherche
De FilterApp.vues d'importation SearchEmployee
urlpatterns = [
# Définir le chemin de l'administrateur
Path ('admin /', admin.placer.URL),
# Définir le chemin de la recherche
Path ('SearchEmp /', SearchEmployee.as_view ()),
]]

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

http: // localhost: 8000 / Serachemp

Filtre les données par filtrage simple

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

# Appliquer le filtrage de base
queyset = employé.objets.filtre (post = 'comptable')

La sortie suivante apparaîtra après avoir appliqué le filtrage de base.

Filtre les données avec plusieurs champs

Ajouter la ligne suivante à la fin du vues.py fichier pour filtrer les enregistrements du employés table où la valeur du département le champ est 'HT' et le courriel le champ est 'Ali @ gmail.com '.

# Appliquer le filtrage avec plusieurs champs
queyset = employé.objets.Filtre (Department = 'HR', Email = 'Ali @ Gmail.com ')

La sortie suivante apparaîtra après avoir appliqué un filtrage multiple.

Filtrez les données avec Q objet

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

# Appliquer le filtrage en utilisant des objets Q
queyset = employé.objets.filtre (q (post = 'manager') | q (département = 'ventes')))

La sortie suivante apparaîtra après avoir appliqué le filtrage d'objet Q.

Filtre les données à l'aide de chaînage filtrant

Ajouter la ligne suivante à la fin du vues.py fichier pour filtrer les enregistrements du employés table où la valeur du département le champ sera d'abord vérifié et s'il renvoie true, la valeur du nom Le champ sera vérifié.

# Appliquer le filtrage par chaînage
queyset = employé.objets.Filtre (Department = 'HR').filtre (name = 'mehrab hossain')

La sortie suivante apparaîtra après avoir appliqué le chaînage filtrant.

Conclusion

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