1

在 django 模型中,我有一个名为Invitation.

我执行manage.py syncdbInvitation已创建。这是我的第一张桌子。

但是当我创建另一个名为Image并执行的类时manage.py syncdb

它返回一个错误。

那个Table UserInvitation already exists

请帮助我Image使用 syncdb 命令创建表。

楷模

 class UserInvitation(models.Model):

   InvitationID =  models.AutoField(primary_key=True)
   InvitationCode =  models.CharField(max_length=255)
   Email = models.CharField(max_length=150)
   ExpireDate = models.DateTimeField()
   Deleted = models.BooleanField(default=False)
   CreatedDate =  models.DateTimeField(auto_now=True)

 class Meta:
    db_table = u'UserInvitation' 

class UserImage(models.Model):
   ImageID =  models.AutoField(primary_key=True)
   UserID = models.IntegerField(unique=True)
   FileName =  models.CharField(max_length=255)

class Meta:
    db_table = u'UserImage'
4

1 回答 1

0

您应该使用South来反映数据库中的更改。

syncdb 运行在数据库中创建所有表的命令,而不仅仅是您添加的表。

使用 South,您应该将模型恢复到只有 UserInvitation 类时,运行以下命令:

python manage.py convert_to_south <name of app>

添加回 UserImage 类并运行命令:

python manage.py schemamigration --auto <name of app>
python manage.py migrate <name of app>

这将在您的数据库中添加 userimage 表。

此外,元类中的 db_table 字段应为小写,因为表名在创建时为小写(检查您的数据库以确保)

请参阅南方文档:http ://south.readthedocs.org/en/latest/

于 2014-01-29T02:53:38.037 回答