将字段添加到现有的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