[Django] SlugField als Form field

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo,

ich habe ien Formular, über das User verschiedene Daten eingeben können. Im Model habe ich auch ein SlugField definiert. Das wird auch schön in der Admin-Oberfläche angezeigt. Nun möchte ich aber, dass auch im Formular für die User ein SlugField erstellt wird. Da ich die Daten speichern möchte, benötige ich einen Wert für das im Model definierte SlugField. Gibt es so etwas wie ein SlugField auch für Form fields?

Mawilo
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Ich habe mir eine kleine Funktion geschrieben, um einen Django-Slug-Wert zu erzeugen:

Code: Alles auswählen

def create_slug(string):
    string = str(string).lower()
    dic = {' ':'-', 'ü':'u', 'ä':'a', 'ö':'o', 'ß':'ss', 'å':'a'}
    for u in dic:
        string = string.replace(u, dic[u])
    for s in string:
        if s == '-':
            continue
        if not s.isalnum():
            string = string.replace(s, '')
    return string
Das geht aber doch bestimmt auch einfacher?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Ja, django hat sicher irgendwo eine slugify Funktion ;)
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

apollo13 hat geschrieben:Ja, django hat sicher irgendwo eine slugify Funktion ;)
Habe ich auch gefunden - nur hätte ich eben gerne den Komfort aus der Admin-Oberfläche in einem "normalen" Webformular. Oder sind meine Ansprüche nur einfach zu hoch :)
metty
User
Beiträge: 99
Registriert: Samstag 13. Dezember 2008, 19:30

Hey...

django hat in seinen defaultfilters eine function "slugify"

Kannst du ganz einfach nutzen:

Code: Alles auswählen

from django.template.defaultfilters import slugify
slugify("Hallo das ist ein TEST!")
u'hallo-das-ist-ein-test'
Antworten