【问题标题】:Can not delete superuser in django and a resulting error django.db.utils.OperationalError: no such column: infrastructure_profile.slug无法删除 django 中的超级用户并导致错误 django.db.utils.OperationalError: no such column: infrastructure_profile.slug
【发布时间】:2019-11-15 23:12:16
【问题描述】:

在我创建了几个配置文件之后,我想在我的模型配置文件(扩展用户模型)中添加一个 slug 字段,然后在到达配置文件页面时出现错误,其中 url 中的 slug 说:

Django OperationalError: no such column: infrastructure_profile.slug

所以我看了这里,看到this的回答

它建议我删除所有迁移文件以重新启动数据库,所以我这样做了

然后我得到了同样的错误,所以我想我应该删除我已经拥有的所有没有 slug 字段的用户,包括超级用户。

所以我关注了this的回答

我得到了那个错误

django.db.utils.OperationalError: no such column: infrastructure_profile.slug

知道发生了什么吗?

编辑

我的 models.py 包含这样的模型配置文件

class Profile(User):
    user = models.OneToOneField(User, parent_link=True, on_delete=models.CASCADE)
    bio = models.TextField()
    slug = models.SlugField(unique=True, blank=True)
    avatar_thumbnail = ProcessedImageField(upload_to='images/',
                                            default='/images/default.png',
                                           processors=[ResizeToFill(300, 300)],
                                           format='JPEG',
                                           options={'quality': 60})
    location = models.TextField()
    tags = models.ManyToManyField(Tag)
    contact_information = models.TextField()
    verified = models.BooleanField(default=False)
    counter = models.IntegerField(default=0)

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

    def save(self, *args, **kwargs):
        print('self.username')
        print(self.user.username)
        self.slug = self.user.username
        super(Profile, self).save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('infrastructure:edit-user-profile', kwargs={'slug': self.slug})

【问题讨论】:

  • 你确定你运行了python manage.py makemigrations && python manage.py migrate
  • 您必须删除所有用户并重新迁移或删除数据库本身并重新迁移
  • @ShakibHossain 是的,我确定
  • @user6837382 我这样做了,但遇到了问题stackoverflow.com/q/58891301/5752406
  • 我不能做第一个建议,这就是问题所在......不能删除超级用户,当我做第二个建议时,我得到了链接问题@user6837382

标签: django django-models


【解决方案1】:

删除数据库并删除迁移文件夹中的所有文件,除了__init__.py 文件在您的所有应用程序中都可以使用。之后再次迁移

【讨论】:

  • 我已经这样做了,没有任何改变,我遇到了同样的问题
【解决方案2】:

我不应该从 User 模型中继承 Profile,我应该将用户自定义为 而是遵循这个答案

https://stackoverflow.com/a/58904426/5752406

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 2014-04-21
    • 2020-04-26
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    相关资源
    最近更新 更多