2011-03-25 73 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