Wartość domyślna dla pola w modelu Django

100

Załóżmy, że mam model:

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 bz administratora, aby każdy obiekt nie mógł zostać utworzony z wartością, a raczej otrzymał domyślną wartość 0000000?

Yuval Adam
źródło

Odpowiedzi:

22

Możesz ustawić wartość domyślną w następujący sposób:

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

a następnie możesz ukryć pole za pomocą klasy administratora swojego modelu w następujący sposób:

class SomeModelAdmin(admin.ModelAdmin):
    exclude = ("b")
Andrew Hare
źródło
21

Możesz również użyć wywoływalnego pola w domyślnym polu, na przykład:

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

A następnie zdefiniuj wywoływalne:

def foo():
    return 'bar'
MrOodles
źródło
4
Wydaje się, że to nie działa w 1.8, chociaż dokumentacja wskazuje, że powinno. Powinna foo()być metodą klasową?
ToothlessRebel
3
Być może będziesz musiał ustawić @staticmethodopakowanie wokół funkcji foo.
Addict