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()
Другие вопросы по тегам