首页 > 解决方案 > 无法删除 django 中的超级用户并导致错误 django.db.utils.OperationalError: no such column: infrastructure_profile.slug

问题描述

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

Django OperationalError: no such column: infrastructure_profile.slug

所以我看这里,看到了这个答案

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

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

所以我跟着这个答案

我得到了那个错误

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})

标签: djangodjango-models

解决方案


我不应该从 User 模型继承 Profile 并且我应该自定义用户以遵循这个答案

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


推荐阅读