h1

Django 1.0 und django-tagging

Februar 3, 2009

Wer seinem Django Projekt eine gute App fürs Tagging hinzufügen möchte, hat sicher schon einmal etwas von django-tagging gehört.

Falls nicht: Django-tagging ist ein kleines Framework, welches das Arbeiten mit Tags innerhalb einer Django-Applikation verbessern soll. Es werden Funktionen bereitgestellt, wie das Erzeugen einer Tagcloud, das Browsen von Einträgen nach Tags und einiges mehr. Klingt gut oder? So wer sich nun denkt „ruck-zuck“ runtergeladen fertig…sollte lieber aufpassen. Denn ungünstigerweise arbeitet die aktuelle Version, welche auf der Projektseite angeboten wird, nicht mit Django 1.0 zusammen. Lediglich die Version im trunk, welche ihr euch per svn laden könnt, ist auf dem aktuellen Stand. Gut also das Ganze mit dem unten auf der Seite angegebenen checkout runterladen (hier ist folgendes zu beachten: falls euer Django-Projekt sich auch in einer svn Versionskontrolle befindet, ist es nicht sinnvoll das checkout für django-tagging innhalb dieses Arbeitsverzeichnisses durchzuführen <– Notiz an mich selbst xD).
So, nachdem ihr alles enpackt habt und mit Superuser Rechten das setup.py Skript ausgeführt habt,

sudo python setup.py install

könnt ihr nun das Verzeichnis tagging unter build/lib/ in euer Djangoprojekt einfügen.

Als nächstes solltet ihr django-tagging in der settings.py unter INSTALLED_APPS hinzufügen (hier ist darauf zu achten, auch ein Unterverzeichnis anzugeben, falls ihr den Ordner tagging in ein solches gelegt habt).

‚deinProjekt.tagging‘,

Nun könnt ihr auch schon eure models.py in der gewünschten App bearbeiten.

from django.db import models
from tagging.fields import TagField
from tagging.models import Tag

class BlogPost(models.Model):

    title = models.CharField(max_length=30)
    body = models.TextField()
    date_posted = models.DateField(auto_now_add=True)
    tags = TagField()

    def set_tags(self, tags):
        Tag.objects.update_tags(self, tags)

    def get_tags(self, tags):
        return Tag.objects.get_for_object(self)

Dabei müsst ihr auch wieder auf die include-Pfade achten, falls ihr tagging in einem Unterverzeichnis zu liegen habt.
So, nachdem ihr diese Models erstellt habt, könnt ihr „syncdb“ ausführen und schon sollte alles funktionieren.

ACHTUNG: Falls ihr schon eine bestehende Datenbank habt, wird Django die Änderungen an den Models nicht übernehmen. Um das zu erreichen tut ihr folgendes:

$ python manage.py dbshell

> ALTER TABLE deineApp_deinModel ADD COLUMN tags varchar;

Danach sollte alles soweit funktionieren. Zur Funktionalität von django-tagging werde ich mich jetzt nicht auslassen.
Dazu könnt ihr zum Beispiel hier nachlesen.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: