2013-08-19 1 views
0

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

+0

спасибо всем Даниель розы * s там! – abw333

ответ

3

Просто запустите запрос на обновление:

MyModel.objects.filter(myfield__isnull=True).update(myfield=new_value) 
+0

Я решил проблему с очень похожей строкой кода: 'orm ['main.mymodel']. Objects.filter (myfield__isnull = True) .update (myfield = 0)'. Я поместил строку в метод форвардов одного из моих сценариев миграции. – abw333

0

Вам необходимо выполнить схему с использованием South. Это довольно просто, просто следуйте инструкциям по их документации. Если вы удалите null=True, blank=True из поля, он спросит вас, какие вы хотите иметь пустое/пустое поля, и вы можете ввести свое значение по умолчанию.

+0

Я удалил 'null = True, blank = True' и запустил' python manage.py schemamigration main --auto', за которым следует 'python manage.py migrate main'. Он произвел следующую ошибку: 'django.db.utils.IntegrityError: _south_new_main_network.panel_image_file_id не может быть NULL' вместо того, чтобы спрашивать меня о моих пустых/пустых полях. Пожалуйста, порекомендуйте. – abw333

 Смежные вопросы

  • Нет связанных вопросов^_^