修改数据库中的表

时间:2012-08-21 09:41:16

标签: django django-models

我有这个模型

class Category(models.Model):
category_name= models.CharField(max_length=255)
sub_category_ID = models.IntegerField(null=True, blank=True)
def __unicode__(self):
    return self.category_name

我已经在表中有数据,但我想将sub_category_ID更改为不删除整个数据库。

class Category(models.Model):
category_name= models.CharField(max_length=255)
sub_category_ID = models.ForeignKey('self',null=True, blank=True)
def __unicode__(self):
    return self.category_name

所以我在更改模型后运行syncdb,它给了我警告。

The following content types are stale and need to be deleted:
uTriga | event_event_category
Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'.`

我输入了是,现在收到错误

column app_category.sub_category_ID_id does not exist

列uTriga_category.sub_category_ID_id不存在

1 个答案:

答案 0 :(得分:0)

默认情况下,Django syncdb机制不允许更改模型。必须删除并重新创建整个数据库。只能在两次同步运行之间添加新模型。

因此,您可能希望使用一些允许逐步演进数据库架构的“迁移”工具。使用一个恕我直言几乎总是一个好主意。

South是Django最着名的,到目前为止,我对此非常满意。