2009-04-16 29 views
66

Załóżmy, że mam model:Wartość domyślna dla pola w modelu Django

class SomeModel(models.Model): 
    id = models.AutoField(primary_key=True) 
    a = models.CharField(max_length=10) 
    b = models.CharField(max_length=7) 

Obecnie używam domyślnego administratora do tworzenia/edycji obiektów tego typu. Jak usunąć pole od administratora, aby każdy obiekt nie mógł zostać utworzony z wartością, a otrzyma domyślną wartość 0000000?

Odpowiedz

19

Można ustawić domyślną takiego:

b = models.CharField(max_length=7,default="foobar") 

a następnie można ukryć pole z Admin klasy Twojego modelu jest tak:

class SomeModelAdmin(admin.ModelAdmin): 
    exclude = ("b") 
15

Można również użyć wywoływalnym w domyślnym terenowych, takich jak:

b = models.CharField(max_length=7, default=foo) 

a potem zdefiniować wymagalne:

def foo(): 
    return 'bar' 
+4

To nie działa w wersji 1.8, chociaż dokumentacja wskazuje, że powinna. Czy 'foo()' powinno być metodą klasową? – ToothlessRebel

+2

Być może trzeba będzie ustawić owijkę '@ staticmethod' wokół funkcji foo. – Addict

Powiązane problemy