it-roy-ru.com

Значение по умолчанию для поля в модели Django

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

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

В настоящее время я использую администратора по умолчанию для создания/редактирования объектов этого типа. Как удалить поле b из админа, чтобы каждый объект не мог быть создан со значением и скорее получал значение по умолчанию 0000000?

80
Yuval Adam

Задайте для editable значение False и для default значение по умолчанию.

http://docs.djangoproject.com/en/dev/ref/models/fields/#editable

b = models.CharField(max_length=7, default='0000000', editable=False)

Кроме того, ваше поле id не обязательно. Django добавит его автоматически.

124
FogleBird

Вы можете установить значение по умолчанию следующим образом:

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

и затем вы можете скрыть поле с помощью класса Admin вашей модели следующим образом:

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

Вы также можете использовать вызываемый в поле по умолчанию, например:

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

А затем определите вызываемый:

def foo():
    return 'bar'
17
MrOodles