将字段添加到现有的Django模型

我有一个小网站,有几个用户,我想添加一个字段到我的模型之一(因此表)。问题是, syncdb当然不会触及现有的模型,我想图了解如何将该字段添加到模型/表中而不必重新填充整个事物。

例:

 class Newspaper(models.Model): name = models.CharField() class UserProfile(models.Model): user = models.ForeignKey(user, unique=True) reads = models.ManyToManyField(Newspaper) 

现在我想在Newspaper模型中添加一个URL字段( blank=True ),而不会破坏用户configuration文件。

有任何想法吗?

没有内置的方法来做到这一点。 但是有一些第三方项目会为你做。 这两个领导者被称为南方和Django进化 ,虽然也有其他的(包括我曾经参与过的移民)。

我肯定会推荐南 – 它有一些非常干净的function,并且运作得非常好。

您可以尝试使用以下命令获取新字段的SQL:

 manage.py sql appname 

其中appname是您的报纸类别所在的应用程序的名称。

然后,你可以手动添加一个字段到你的appname_newspaper表,使用ALTER TABLE 。 我没有意识到直接用Django做这个的方法,因为Django不支持迁移。

2015答案:

运行以下命令:

 python manage.py makemigrations python manage.py migrate