3

我想重置我的 Django 项目的数据库,所以我做了以下步骤:

  1. 删除了我的 SQLite 数据库
  2. 做过python manage.py syncdb
  3. 做过python manage.py migrate users --fake

创建新帐户并登录后,我收到以下错误消息:

no such table: users_userprofile

这是我的用户 model.py 的样子:

class UserProfile(models.Model):
  user = models.OneToOneField(User)
  joined_goals = models.ManyToManyField(Goal, related_name="joined_goals")
  followingGoals = models.ManyToManyField(Goal, related_name="following_goals")

  def __unicode__(self):
    return self.user.username

  def get_goals(self):
    try:
      goals = Goal.objects.filter(user=self.user)
      return goals
    except Goal.DoesNotExist:
      return []

def create_user_profile(sender, instance, created, **kwargs):
    if created:
      userProfile = UserProfile.objects.create(user=instance)

post_save.connect(create_user_profile, sender=User)

所以,有一个 UserProfile 类,但 South 似乎没有制作表格来保存用户配置文件。当我这样做时python manage.py schemamigration users --auto,它说似乎没有任何改变。如何获得它来创建 userprofiles 表?

4

3 回答 3

6

我有这个完全相同的问题。事实证明,使用 South 时存在某种循环依赖。要解决此问题,请不要在运行 syncdb 时创建超级用户,而是运行:

python manage.py createsuperuser

使用 syncdb 创建数据库后。此时,您的配置文件表将已创建,并且 post_save 信号将成功。

于 2012-05-13T21:18:18.687 回答
0

尝试在没有 --fake 选项的情况下迁移表。如果您在数据库中应用了更改但在 south_migrationhistory 表中没有应用,则 Fake 很有用。

于 2012-04-27T04:48:05.703 回答
0

以下应该适用于某些人:

python manage.py schemamigration myapp --initial
python manage.py migrate myapp
于 2013-10-28T15:01:53.333 回答