2013-08-19 59 views
0

我剛剛在我的Django站點中的某個模型的某個字段中添加了默認值。我設置默認值之前存在的此類型的所有對象對此字段都爲空值。我希望在設置默認值之前,將剛剛設置的新默認值向後傳播到所有已存在的對象上。我怎樣才能做到這一點?將新的默認值傳播給舊的Django對象

+0

感謝所有丹尼爾上漲*的那裏! – abw333

回答

3

只要運行一個更新查詢:

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

我用一條非常相似的代碼行解決了我的問題:'orm ['main.mymodel']。objects.filter(myfield__isnull = True).update(myfield = 0)'。我將該行放在我的其中一個遷移腳本的forwards方法中。 – abw333

0

您需要使用South進行Schemamigration。這很容易,只需按照他們的文檔教程。如果您從字段中刪除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