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?

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")

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'

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.