2013-07-20 44 views
2

我剛剛使用PIP(意思是我有0.5.5)安裝了django-mptt,將現有模型(「評論」)改爲MPTTModel的子類,並試圖做一個模式遷移與南,但南給了我以下錯誤信息:南試圖將模型切換到django-mptt

字段'Comment.lft'沒有默認指定,但不是NULL。由於您正在添加此字段,因此您必須指定用於現有行的默認值。你想:

  1. 現在退出,並在models.py添加一個默認的領域
  2. 指定一個一次性的價值利用現有的資料欄

請選擇一個選項:

this thread,它看起來像開發人員建議告訴南使用「0」,但其他人建議這樣做會產生另一個問題。如果有人能夠闡明我可能做錯了什麼,或者我應該如何迴應,我會非常感激。

+2

當它說'請選擇一個選擇:'選擇'2'並輸入'None'也許這將解決問題 –

回答

1

正如Victor建議的那樣,在提示時將「None」設置爲默認值是正確的操作方法。但是,在遷移之後,可能還需要在模型上使用rebuild()方法。我也貼到Django的MPTT-dev的谷歌集團,幷包的作者克雷格·德Stigter回答下列要求:

如果遷移進口的實際模型(而不是南ORM的),並做了YourModel .objects.rebuild()在遷移結束時,它應該正確遷移。在此期間用於mptt字段的實際值與rebuild()將覆蓋它無關。

我問他澄清他是否說我可以指定「無」,當由南要求設置默認值,然後去殼並使用重建(),他說是的。

無論如何,它似乎爲我工作。