Итак, как я недавно понял, default
, который мы указываем в поле Django, предназначен только для заполнения уже существующих строк и не функционирует как «реальное» значение по умолчанию на уровне базы данных.Это можно проверить, посмотрев column_default
из оболочки базы данных.
Если я правильно понимаю, Postgres использует default
для ввода значений, когда нет ввода.Если это так, то мы не сможем создать новый объект в Django без указания значения по умолчанию, верно?
Для ex -
class MyModel(models.Model):
name = models.CharField(max_length=255)
status = models.BooleanField(default=True) # new field added
Для приведенной выше модели:default
используется только для обратной засыпки вновь добавленного поля для уже существующих строк.На самом деле он не устанавливает значение по умолчанию на уровне базы данных.
column_name | column_default
-------------+----------------
mymodel |
Но если это так, я не смогу выполнить этот запрос -
MyModel.objects.create(name='test')
, так как естьнет "реального" по умолчанию.Но я могу, и я не понимаю, почему.
Спасибо!