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


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

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

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.