2015-11-07 5 views
6

Mein models.py sieht wie folgt aus:Wie wird eine zufällige Ganzzahl als Standardwert für ein Django CharField festgelegt?

import random 
random_string = str(random.randint(10000, 99999)) 

class Content(models.Model): 
    ...... 
    unique_url = models.CharField(default = random_string) 

Wenn ich einen Inhalt in Admin hinzufügen, wird eine ganze Zahl im Bereich erzeugt und in das Charfield als den Standardwert setzen. Von dort kann ich einfach mehr Wörter zum charfield hinzufügen. Das Problem mit meiner aktuellen Einrichtung ist jedoch, dass die Ganzzahl bei jedem Hinzufügen eines neuen Artikels gleich bleibt. Ich möchte die zufällige Ganzzahl generieren und einfügen, da ich das Feld unique_url verwende, um jedes meiner spezifischen Objekte im Grunde zu finden, und ich erwarte eine Menge Inhalt, so dass das Hinzufügen der Zufallszahl im Allgemeinen sicherstellt, dass jeder Inhalt eine Eins hat Art unique_url.

Daher suche ich nach einem System, das eine zufällige Ganzzahl generiert, jedes Mal, wenn ein neuer Inhalt über das Admin-Panel hinzugefügt wird, und legt es als Standard eines der Felder fest. Ist so etwas in Django überhaupt möglich?

Antwort

7

Auf diese Weise generieren Sie einmal eine Zufallszahl. Sie müssen eine Funktion wie definieren:

def random_string(): 
    return str(random.randint(10000, 99999)) 

Und dann Ihr Modell definieren, wie Sie bereits haben, ohne (), um einen Verweis auf die Funktion selbst eher zurück ein Wert, der durch die Funktion übergeben:

class Content(models.Model): 
    ...... 
    unique_url = models.CharField(default = random_string) 
+0

Ah danke, es funktioniert gut! –

+0

Ich bin sehr froh, willkommen! PS. Ich habe gerade meine 3k Punkte erreicht, danke an deine Frage! – Wtower

Verwandte Themen