将字段添加到现有Django模型

时间:2009-05-06 15:18:32

标签: django-models

我有一个小网站,有一些用户,我想在我的一个模型(以及表格)中添加一个字段。问题是syncdb当然不会触及现有的模型我正在试图弄清楚如何将这个字段添加到模型/表中,而不必重新填充整个事物。

示例:

class Newspaper(models.Model):
    name = models.CharField()

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

现在,我想在blank=True模型中添加网址字段Newspaper,而不会破坏用户个人资料。

有什么想法吗?

3 个答案:

答案 0 :(得分:38)

没有内置方法可以做到这一点。但是,有许多第三方项目将为您完成。两个主要的被称为Southdjango-evolution,尽管还有其他一些(包括我参与的一个,dmigrations)。

我肯定会推荐South - 它有许多非常简洁的功能,而且效果非常好。

答案 1 :(得分:18)

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

manage.py sql appname

appname是您的报纸课程所在的应用程序的名称。

然后,您可以使用appname_newspaper手动将字段添加到ALTER TABLE表格中。我不知道如何直接使用Django,因为Django不支持迁移。

答案 2 :(得分:1)

2015回答:

运行以下命令:

python manage.py makemigrations
python manage.py migrate