2015-10-07 29 views
0

我添加一個字段,現有的模型:應該是什麼的默認值一個NOT NULL唯一字段

... 
booking_id = models.CharField(null=False, unique=True, max_length=5) 
... 

現在,當我運行./manage makemigrations,要求一個默認值。該值在pre_save信號中創建。在這種情況下,我應該給出什麼樣的默認值?

顯然,如果我給一個默認值,當我運行./manage migrate這引起了django.db.utils.IntegrityError

+0

有沒有一種方法可以在'pre_save'中執行你可以調用的東西? – Ivan

+0

如果我不使用pre_save,我需要查詢db。 – Gocht

回答

4

添加字段null=True,並創建一個遷移。然後添加數據遷移以填充該字段。最後,設置null=False並創建最終遷移以添加NOT NULL約束。

+0

這是棘手的方式。 – Gocht

+1

我一直討厭ORM的這個特性。特別是當它需要這個空表...... ...... –

+0

@Beltiras爲一個空表,你不能設置'null = True',然後指定任何你想要的默認值。由於沒有任何行,因此唯一約束不會被破壞。 – Alasdair

相關問題