2010-05-25 53 views
2

在Django模型說,在細節這個模型中存在/ models.pyDjango的同步DB問題

class OccDetails(models.Model): 
     title = models.CharField(max_length = 255) 
     occ = models.ForeignKey(Occ) 

所以當同步數據庫是由以下領域獲得創建

後來到這兩個字段的添加和同步DB是取得了新的領域犯規得到created.How這是要解決的,還有什麼是auto_now =在下面

真正這些都是新領域

  created_date = models.DateTimeField(auto_now_add=True) 
     modified_date = models.DateTimeField(auto_now_add=True, auto_now=True) 

回答

7

syncdb爲INSTALLED_APPS中尚未創建表的所有應用程序創建數據庫表。

執行syncdb不會改變現有的表
syncdb只會造成對尚未安裝的型號表。它將永遠不會發出ALTER TABLE語句來匹配安裝後對模型類所做的更改。對模型類和數據庫模式的更改往往涉及某種形式的模糊性,在這些情況下,Django必須猜測正確的更改。在這個過程中,關鍵數據可能會丟失。

您可以

  • 問題手動ALTER TABLE命令
  • DROP TABLE特定表(會丟失數據),然後再次運行
  • 運行django-admin sqlclear執行syncdb獲得SQL語句列表清除整個數據庫並運行這些命令(將刷新數據庫 - 你將失去所有現有的數據)或

DateField.auto_now:每次保存對象時自動將字段設置爲NOW()。用於「上次修改」的時間戳。請注意,始終使用當前日期;這不僅是您可以覆蓋的默認值。

因此,modified_date列會自動更新每次調用object.save()

+0

謝謝...................... – Hulk 2010-05-25 09:13:53

3

這是Django的一個共同的問題的時間。正如Amarghosh所說,syncdb無法修改現有表的模式。

South已經被創建來解決這個問題。

我確實推薦它。

+0

謝謝...................... – Hulk 2010-05-25 09:13:35