Django - Generiere Standard-Slug

8

Ich möchte einen zufälligen Slug für mein Modell generieren, aber ohne "blank = True" zu setzen (wie ich es später mit Validierung erzwingen möchte).

Ich habe mich gefragt, ob ich so etwas tun könnte:

%Vor%

Wo ist some_method eine Methode, die einen zufälligen Slug erzeugt? Ich habe den obigen Code ausprobiert und es funktioniert nicht: (

Was ich tun möchte, ist ein eindeutiger Slug (unique_slugify?)

zu erzeugen     
Hanpan 03.02.2011, 09:53
quelle

5 Antworten

8

Sie können die Save-Methode der Modelle überschreiben, so dass bei der Erstellung einer neuen Entität der Slug im laufenden Betrieb generiert wird. Etwas wie:

%Vor%

Sie könnten das tun, aber es ist nicht sehr gut und besser wäre es, wenn der Slug eine deterministische Slugified-Version des Objektnamens wäre.

    
Björn Lindqvist 03.02.2011, 10:01
quelle
19

Sie können dies verwenden, wenn Sie möchten, dass Ihr Slug automatisch mit dem Eintrag erzeugt wird, der in einem anderen Feld im selben Modell eingegeben wurde, in dem sich der Slug befindet.

%Vor%
  • populate_from ist das Feld im Modell, das automatisch den Slug
  • generiert
Prateek 03.02.2011 12:14
quelle
2

default muss ein Wert oder ein Callable sein.
Es ist also default=some_method , nicht default=some_method() . Hier ist ein Beispiel:

%Vor%     
BigJ 25.09.2011 14:11
quelle
1

kann die Modellvalidierung helfen? Ссылка

Sie können einfach den Wert validieren, der in ein Slug-Feld geschrieben werden soll, und wenn es bereits existiert, generieren Sie etwas Einzigartiges.

Auch das Überschreiben der Speichermethode könnte die Lösung sein.

Prost.

    
Ignas Butėnas 03.02.2011 10:08
quelle
0

in Google suchen, fand ich ähnliche Frage: Wie Slug in Django zu verwenden

Ich denke, der bessere Ansatz besteht darin, die Speichermethode neu zu schreiben und das Feld in Form zu validieren.

Aber Slug sollte eindeutig sein, also generiere zufällige Strings nicht gut! Wie Tommaso Bardugi früh sagt, wenn Sie den Zeitstempel in URL hinzufügen, wird dies gelöst.

    
Tarsis Azevedo 03.02.2011 11:37
quelle

Tags und Links