Значення за замовчуванням для поля в моделі Джанго


100

Припустимо, у мене є модель:

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

В даний час я використовую адміністратора за замовчуванням для створення / редагування об'єктів такого типу. Як видалити поле bз адміністратора, щоб кожен об'єкт не міг бути створений зі значенням, а скоріше отримає значення за замовчуванням 0000000?

Відповіді:



22

Ви можете встановити за замовчуванням так:

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

а потім ви можете приховати поле таким чином, як клас адміністратора вашої моделі:

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

21

Ви також можете використовувати позивний у полі за замовчуванням, наприклад:

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

А потім визначте позивний:

def foo():
    return 'bar'

4
Здається, це не працює в 1.8, хоча документація вказує, що це слід. Чи повинен foo()бути метод класу?
ToothlessRebel

3
Можливо, вам доведеться встановити @staticmethodобгортку навколо функції foo.
наркоман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.