想要将一对一列添加到现有表中

时间:2011-06-29 12:28:42

标签: python mysql django alter-table

我在客户端中有一个名为note的新字段,它与Notes具有一对一的关系。 我希望能够在mysql的Client表下添加note列。当我使用python manage.py syncdb时,它不起作用。所以我想知道如何将mysql中的一对一字段添加到现有表中。

models.py

class Note(models.Model):
    datetime = models.DateTimeField(default=datetime.now)
    user  = models.ForeignKey(User)
    note = models.TextField()

    def __unicode__(self):
        return unicode(self.name)

class Client(models.Model):
    note = models.OneToOneField(Note) # new
    def __unicode__(self)
       return unicode(self.user)

2 个答案:

答案 0 :(得分:1)

Syncdb不会更改您的数据库,以免破坏您的数据。请参阅django book

您可以手动更新数据库,也可以使用自动迁移工具(风险自负),例如South

编辑: 在django book中,您还可以阅读有关手动更改的详细说明以及SQL示例。其他有用的信息可以在MySQL manual

中找到

答案 1 :(得分:0)

您没有说出应用程序名称是什么,所以我认为它是fooapp。

首先看一下SQL Django用于创建相关表格的内容:

python manage.py sql fooapp

对于其他字段,请运行此sql命令:

ALTER TABLE fooapp_client ADD ...

其中...是您在“manage.py sql fooapp”

的输出中看到的字段声明

请记住还要在“manage.py sql fooapp”输出中执行对新字段进行操作的任何索引/约束命令。