2011-03-25 70 views
1

我有一個名爲'FeatureTag'的模型(我需要保留/使用模型中的數據),我需要重命名爲'Feature'。Django模型重命名

class FeatureTag(models.Model): 
     name = models.CharField(max_length=48, unique=True) 
     data = models.ManyToManyField(Product) 
     def __unicode__(self): 
       return self.name 

3個問題:

這是不是可以使用Django做什麼?

這是南方能做到的嗎?

有沒有辦法重新命名模型的返回語句以反映不同的名稱?

謝謝!!!!

+1

一些很好的答案http://stackoverflow.com/questions/2862979/easiest-way-to-rename-a-model-using-django-south – gladysbixly 2011-03-25 18:30:39

+0

nr.3聽起來真的很混亂。 – pyeleven 2011-03-25 18:33:50

+0

重新3:是的,重命名類名稱,添加Meta選項'db_table ='appname_featuretag'' – Jerzyk 2011-03-25 18:41:48

回答

2

爲您3個問題:

  • 是的,你可以爲你的Django的模型,只要確保所有引用修復它。
  • 是的,你可以用South做到這一點。您可能需要編輯south生成的文件 - 因此請確保檢查生成的代碼。
  • 你想重寫什麼函數,爲什麼?你的用例是什麼?
+0

那麼,我重命名模型和所有引用,但是當我運行syncdb時,它聲稱內容是陳舊和需要的被刪除。我需要在重命名時保留模型中的數據。 – pythondjango 2011-03-25 18:37:33

+0

您需要編輯自動生成的南遷移,因爲它會將重命名識別爲刪除和新模型。南部有一個rename_table,所以可以用少量的努力來完成。 http://south.aeracode.org/docs/databaseapi.html#methods – 2011-03-25 18:38:20

+0

它不是表格的內容,而是表示它是陳舊的,它是ContentTypes,它是一個跟蹤當前模型的表格,當您刪除模型時(或重新命名)數據變得過時。同意刪除它們應該很好。如果它是實時數據,則始終首先進行備份。 – 2011-03-25 18:39:55