在Django 1.7中更改模型的名称?

时间:2014-09-28 01:34:28

标签: python django orm

我想更改模型的名称

自:

class GreenPost(models.Model):
 user = models.ForeignKey(settings.AUTH_USER_MODEL)
 title = models.CharField(max_length=40)
 text = models.CharField(max_length=255)

 def __unicode__(self):
    return str(self.user.id) + " -- " + self.text

class GreenMessage(models.Model):
  post = models.ForeignKey(Post)
  text = models.CharField(max_length=255)
  status = models.BooleanField(default=False)
  user = models.ForeignKey(settings.AUTH_USER_MODEL)

  def __unicode__(self):
    return str(self.post.user.username) + " -- " + self.text

致:

class Post(models.Model):
 user = models.ForeignKey(settings.AUTH_USER_MODEL)
 title = models.CharField(max_length=40)
 text = models.CharField(max_length=255)

 def __unicode__(self):
    return str(self.user.id) + " -- " + self.text

class Message(models.Model):
  post = models.ForeignKey(Post)
  text = models.CharField(max_length=255)
  status = models.BooleanField(default=False)
  user = models.ForeignKey(settings.AUTH_USER_MODEL)

  def __unicode__(self):
    return str(self.post.user.username) + " -- " + self.text

如果我只是应用迁移,django ORM将删除旧的数据库表并创建新表。因此,删除我在数据库中可能拥有的任何数据。

我可以使用哪种方式重命名模型,但仍然保留数据和相同的关系(外键')

1 个答案:

答案 0 :(得分:3)

自动检测器可能会因为您一次更改Models而感到困惑。尝试一次更改一个名称,每次都运行makemigrations

如果由于某些原因无效,您可以创建自己的迁移文件(使用makemigrations --empty)并使用RenameModel操作。