2015-11-07 12 views
6

Moja models.py wygląda następująco:Jak ustawić losową liczbę całkowitą jako wartość domyślną dla Django CharField?

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

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

Kiedy dodać zawartość admin, liczbę całkowitą w zakresie jest generowany i umieścić w Charfield jako wartość domyślną. Stamtąd mogę łatwo dodać więcej słów do charfield. Jednak problem z moją obecną konfiguracją polega na tym, że liczba całkowita pozostaje taka sama za każdym razem, gdy dodam nowy artykuł. Chcę generować i wstawiać losową liczbę całkowitą, ponieważ używam pola unique_url, aby w zasadzie znaleźć każdy z moich konkretnych obiektów, i oczekuję dużej ilości treści, więc dodanie losowej liczby ogólnie zapewni, że każda treść ma jedną z rodzaj unique_url.

Dlatego szukam systemu, który generuje losową liczbę całkowitą za każdym razem, gdy nowa zawartość jest dodawana za pomocą panelu administracyjnego i umieszcza ją jako domyślną dla jednego z pól. Czy to możliwe w Django?

Odpowiedz

7

W ten sposób raz wygenerujesz losową liczbę. Musisz zdefiniować funkcję, takie jak:

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

a następnie zdefiniować swój model jak już masz, bez () aby przekazać referencję do samego raczej wartość zwracana przez funkcję funkcję:

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

Ah dziękuję, to działa ładnie! –

+0

Bardzo się cieszę, witam! PS. Właśnie dotarłem do 3k punktów na twoje pytanie! – Wtower

Powiązane problemy