Django создает DateTimeField(auto_now_add) для заполненной таблицы
Я решил добавить created = Models.DateTimeField(auto_now_add = True)
поле для модели, в которой уже созданы объекты (без created
поле, конечно), и я сохранил их как initial_data
Так что теперь, когда я бегу syncdb
Я получаю ошибку app_model.created may not be NULL
так как он пытается загрузить объекты без этого поля.
Так как мне это исправить? Я желаю, чтобы это автоматически назначало время, когда я звоню syncdb
как object.created
, Могу ли я сделать это?
Спасибо за любую помощь!
2 ответа
Я бы использовал значение по умолчанию вместо auto_now_add.
from django.utils.timezone import now
class Something(models.Model):
created = models.DateTimeField(default=now, editable=False)
Это также делает ваш часовой пояс поля данных осведомленным и использует UTC.
После добавления нового поля в модель вам нужно создать и запустить миграцию, выполнив:
>>> python manage.py makemigrations
>>> python manage.py migrate
В этом случае, когда он попытается создать новое ненулевое поле, он спросит вас, хотите ли вы добавить создание значения по умолчанию в вашей модели или если вы хотите определить значение сейчас, вы можете выбрать добавить значение прямо здесь. в консоли. Когда запросить значение, вы можете использовать datetime
модуль, так что вы можете написать в качестве значения:
datetime.datetime.now()