Python-Serverprogrammierung: Verwendung von django-mptt für die Verarbeitung von Baumdatenstrukturen

王林
Freigeben: 2023-06-18 09:03:11
Original
1854 Leute haben es durchsucht

Python ist eine hervorragende Programmiersprache, die häufig in der serverseitigen Programmierung verwendet wird. Bei der serverseitigen Programmierung ist die Verarbeitung von Baumdatenstrukturen eine häufige Anforderung. Zu diesem Zeitpunkt müssen Sie einige Tools verwenden, um dies zu erreichen. Unter diesen ist django-mptt ein sehr praktisches Tool. In diesem Artikel wird die Verwendung von django-mptt für die Verarbeitung von Baumdatenstrukturen vorgestellt.

1. Was ist Django-mptt?

django-mptt ist eine Anwendung zur Baumstrukturverarbeitung, die auf dem Django-Framework basiert. Sie kann uns bei der Abwicklung verschiedener Vorgänge wie dem Erstellen, Aktualisieren, Löschen und Sortieren von Baumstrukturdaten helfen. Es kann unsere Codierungsarbeit erheblich vereinfachen und es uns ermöglichen, uns mehr auf die Verarbeitung der Geschäftslogik zu konzentrieren.

2. Installation von django-mptt

Bevor wir django-mptt verwenden, müssen wir es installieren. Geben Sie den folgenden Befehl in die Befehlszeile ein:

pip install django-mptt
Nach dem Login kopieren

3. Grundlegende Verwendung von django-mptt

  1. Erstellen Sie ein Modell

Zuerst müssen wir ein Modell in models.py erstellen, der übergeordneten Klasse des Baums Struktur, Der Code lautet wie folgt:

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
Nach dem Login kopieren

In diesem Modell verwenden wir die beiden Klassen MPTTModel und TreeForeignKey. Unter diesen ist MPTTModel die von django-mptt bereitgestellte Modellbasisklasse zum Verarbeiten von Baumstrukturen und TreeForeignKey ist die von django-mptt bereitgestellte Klasse zum Erstellen von Fremdschlüsseln. Wir definieren ein Namensattribut und ein übergeordnetes Attribut im Kategoriemodell. Das übergeordnete Attribut ist vom Typ TreeForeignKey und seine Beziehung zu sich selbst ist eine Viele-zu-Eins-Beziehung. In der MPTTMeta-Klasse geben wir das Attribut order_insertion_by an, das beim Sortieren der Baumstruktur eine Rolle spielt.

  1. Migrieren

Nachdem wir das Modell erstellt haben, müssen wir es migrieren, damit das Modell Datenbanktabellen auf dem Server erstellen kann. Geben Sie den folgenden Befehl in die Befehlszeile ein:

python manage.py makemigrations
python manage.py migrate
Nach dem Login kopieren

3. Daten hinzufügen

Nachdem wir das Kategoriemodell erstellt haben, müssen wir einige Daten hinzufügen, damit wir wirklich verstehen können, wie es verwendet wird. Geben Sie den folgenden Befehl im Terminal ein:

python manage.py shell
Nach dem Login kopieren

Sobald wir uns in der Django-Shell befinden, können wir wie unten gezeigt einige Daten hinzufügen:

>>> 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()
Nach dem Login kopieren

In diesem Code erstellen wir einen Wurzelknoten namens root und speichern ihn in der Datenbank. Dann haben wir zwei untergeordnete Knoten mit den Namen child1 und child2 erstellt und eine Eltern-Kind-Beziehung zwischen ihnen und dem Wurzelknoten hergestellt. Schließlich erstellen wir einen untergeordneten Knoten mit dem Namen child11 und stellen eine Eltern-Kind-Beziehung mit child1 her.

4. Daten abfragen

Nachdem wir die Daten hinzugefügt haben, können wir unsere Baumstrukturdaten über einige von django-mptt bereitgestellte APIs abfragen, wie unten gezeigt:

>>> 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>
Nach dem Login kopieren

In diesem Code verwenden wir Category .objects.all() Ruft die Liste der gesamten Datenstruktur ab und verwendet die Methode get_family(), um die gesamte Datenstruktur abzurufen. Wir haben auch die Methode get_children() verwendet, um die untergeordneten Knoten eines Knotens abzurufen, und die Methode get_parent(), um den übergeordneten Knoten eines Knotens abzurufen.

5. Daten löschen

Nachdem wir die Daten abgefragt haben, können wir sie auch löschen. Wenn wir einen Löschvorgang durchführen, müssen wir darauf achten, zuerst alle untergeordneten Knoten des Knotens zu löschen, da sonst eine Ausnahme ausgelöst wird. Unten ist der Code für den Löschvorgang:

>>> child1.delete()
>>> # 删除child1后,我们执行以下查询操作
>>> category_tree = Category.objects.all()
>>> category_tree
[<Category: root>, <Category: child2>]
Nach dem Login kopieren

In diesem Beispiel löschen wir den Knoten child1 und fragen die Datenstruktur mit der Methode get_all() ab. Zu diesem Zeitpunkt können wir sehen, dass Child1 und Child11 aus der Datenstruktur gelöscht wurden.

4. Zusammenfassung

In diesem Artikel haben wir die grundlegende Verwendung von Django-mptt gelernt, einschließlich der Erstellung von Modellen, der Migration, dem Hinzufügen von Daten, dem Abfragen von Daten und dem Löschen von Daten. Mit django-mptt können wir problemlos das Hinzufügen, Löschen, Ändern und Abfragen von baumstrukturierten Daten durchführen. Ich hoffe, dass dieser Artikel für Ihr Studium hilfreich sein wird.

Das obige ist der detaillierte Inhalt vonPython-Serverprogrammierung: Verwendung von django-mptt für die Verarbeitung von Baumdatenstrukturen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage