2011-08-08 57 views

回答

0

不容易。我會從Django源代碼抓取一份dumpdata.py文件,並將其放入您的項目並進行自定義。將它擴展爲使用自定義管理器進行轉儲或擴展排除以支持app.model.field並不難。

這聽起來像一個普遍有用的擴展。

+0

對不起後期rply,我剛剛遇到南n我認爲它會有幫助 –

+0

是的。如果遷移是你爲什麼要進行數據轉儲,那麼肯定使用南方語言! –

+0

感謝您的回覆 –

0

一個可能的技巧是定義一個帶有子域的新模型,並設置managed=False並覆蓋Meta中的db_table域。

也可以避免重複通過通用抽象父模型定義公共字段。這種方法的

class CommonBase(models.Model): 
    class Meta: 
     abstract = True 

class ModelX(CommonBase): 
    pass 

class SubsmetOfModelX(CommonBase): 
    class Meta: 
     managed = False 
     db_table = 'app_label_modelx' 

缺點可能是:

  • 總是需要在dumpdata排除上述兩種的至少一個模型,否則dumpdata將包括重複的對象。
  • loaddata對於SubsetOfModelX將會失敗,如果ModelX上有任何null=False字段不在子集模型上。