Maison > Article > développement back-end > Programmation serveur Python : utilisation de Django-mptt pour le traitement de la structure de données arborescente
Python est un excellent langage de programmation largement utilisé dans la programmation côté serveur. Dans la programmation côté serveur, le traitement des structures de données arborescentes est une exigence courante. À l'heure actuelle, vous devez utiliser certains outils pour y parvenir. Parmi eux, Django-mptt est un outil très pratique. Cet article explique comment utiliser Django-mptt pour le traitement de la structure des données arborescentes.
1. Qu'est-ce que Django-mptt ?
django-mptt est une application de traitement de structure arborescente basée sur le framework Django. Elle peut nous aider à gérer diverses opérations telles que la création, la mise à jour, la suppression et le tri des données de structure arborescente. Cela peut grandement simplifier notre travail de codage et nous permettre de nous concentrer davantage sur le traitement de la logique métier.
2. Installation de Django-mptt
Avant d'utiliser Django-mptt, nous devons l'installer. Entrez la commande suivante dans la ligne de commande :
pip install django-mptt
3. Utilisation de base de django-mptt
Tout d'abord, nous devons créer un modèle dans models.py, qui est la classe parent de l'arborescence. structure, Le code est le suivant :
from django.db import models from mptt.models import MPTTModel, TreeForeignKey class Category(MPTTModel): name = models.CharField(max_length=50, unique=True) parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children') class MPTTMeta: order_insertion_by = ['name'] def __str__(self): return self.name
Dans ce modèle, nous utilisons les deux classes MPTTModel et TreeForeignKey. Parmi eux, MPTTModel est la classe de base du modèle fournie par Django-mptt pour le traitement des arborescences, et TreeForeignKey est la classe fournie par Django-mptt pour créer des clés étrangères. Nous définissons un attribut de nom et un attribut parent dans le modèle Category. L'attribut parent est de type TreeForeignKey et sa relation avec lui-même est une relation plusieurs-à-un. Dans la classe MPTTMeta, nous spécifions l'attribut order_insertion_by, qui jouera un rôle lorsque nous trierons l'arborescence.
Après avoir créé le modèle, nous devons le migrer afin que le modèle puisse créer des tables de base de données sur le serveur. Entrez la commande suivante sur la ligne de commande :
python manage.py makemigrations python manage.py migrate
3. Ajouter des données
Après avoir créé le modèle de catégorie, nous devons ajouter quelques données afin de pouvoir vraiment comprendre comment il est utilisé. Entrez la commande suivante dans le terminal :
python manage.py shell
Une fois dans le shell Django, nous pouvons ajouter quelques données comme indiqué ci-dessous :
>>> from blog.models import Category >>> root = Category(name='root') >>> root.save() >>> child1 = Category(name='child1', parent=root) >>> child1.save() >>> child2 = Category(name='child2', parent=root) >>> child2.save() >>> child11 = Category(name='child11', parent=child1) >>> child11.save()
Dans ce code, nous créons un nœud racine appelé root et l'enregistrons dans la base de données. Ensuite, nous avons créé deux nœuds enfants nommés child1 et child2, et établi une relation parent-enfant entre eux et le nœud racine. Enfin, nous créons un nœud enfant nommé child11 et établissons une relation parent-enfant avec child1.
4. Interroger les données
Après avoir ajouté les données, nous pouvons interroger nos données de structure arborescente via certaines API fournies par django-mptt, comme indiqué ci-dessous :
>>> category_tree = Category.objects.all() >>> category_tree [<Category: root>, <Category: child1>, <Category: child11>, <Category: child2>] >>> category_tree.get(name="root").get_family() [<Category: root>, <Category: child1>, <Category: child11>, <Category: child2>] >>> category_tree.get(name="root").get_children() [<Category: child1>, <Category: child2>] >>> category_tree.get(name="child1").get_children() [<Category: child11>] >>> category_tree.get(name="child11").get_parent() <Category: child1>
Dans ce code, nous utilisons la catégorie .objects.all() obtient la liste de l'intégralité de la structure de données et utilise la méthode get_family() pour obtenir l'intégralité de la structure de données. Nous avons également utilisé la méthode get_children() pour obtenir les nœuds enfants d'un nœud, et la méthode get_parent() pour obtenir le nœud parent d'un nœud.
5. Supprimer les données
Après avoir interrogé les données, nous pouvons également les supprimer. Lors de l'exécution d'une opération de suppression, nous devons d'abord faire attention à la suppression de tous les nœuds enfants du nœud, sinon une exception sera levée. Vous trouverez ci-dessous le code de l'opération de suppression :
>>> child1.delete() >>> # 删除child1后,我们执行以下查询操作 >>> category_tree = Category.objects.all() >>> category_tree [<Category: root>, <Category: child2>]
Dans cet exemple, nous supprimons le nœud child1 et interrogeons la structure de données à l'aide de la méthode get_all(). À ce stade, nous pouvons voir que child1 et child11 ont été supprimés de la structure de données.
4. Résumé
Grâce à cet article, nous avons appris l'utilisation de base de Django-mptt, notamment la création de modèles, la migration, l'ajout de données, l'interrogation de données et la suppression de données. En utilisant Django-mptt, nous pouvons facilement gérer les opérations d'ajout, de suppression, de modification et d'interrogation de données arborescentes. J’espère que cet article sera utile à votre étude.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!