django.db.utils.OperationalError:无此列:authentication_user.name

3mpgtkmj  于 2023-10-21  发布在  Go
关注(0)|答案(4)|浏览(130)

我试图在我的用户身份验证模型中添加一个新字段。但是每当我试图运行python manage.py makemigrations时,控制台就会显示,
django.db.utils.OperationalError:无此列:authentication_user.name
以下是我模型的一部分:

class User(AbstractBaseUser, PermissionsMixin):

    id = models.UUIDField(primary_key=True, max_length=36, default=uuid.uuid4, 
                          editable=False,blank=False, null=False)
    cus_id = models.CharField(max_length = 250, null=True, blank=True, 
                              default=increment_cus_number)
    email = models.EmailField(max_length=255, unique=True, db_index=True)
    username = models.CharField(max_length=250, blank = True, null = True)
    name = models.CharField(max_length=250, default = '', blank = True, null = True)
    first_name = models.CharField(max_length=250, blank=True, null=True)
    last_name = models.CharField(max_length=250, blank=True, null=True)
    mobile = models.CharField(max_length = 100, null = True)
    date_of_birth = models.DateField(blank=True, null=True)
    address = models.TextField(blank=True, null=True)
    picture = models.ImageField(blank=True, null=True)
    gender = models.CharField(max_length=100, blank = True, null= True)
    is_verified = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    business_partner = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    auth_provider = models.CharField(
        max_length=255, blank=False,
        null=False, default=AUTH_PROVIDERS.get('email'))

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = UserManager()

    def __str__(self):
        return self.email

关于这个问题的任何建议/提示将是一个很大的帮助。

fafcakar

fafcakar1#

尝试运行:

py manage.py migrate

数据库中的列似乎尚未创建。如果不起作用:

  • 从项目中删除迁移文件,清除后迁移的文件夹结构应如下所示:
/migrations
    /__init__.py
  • 使移民重新产生。
  • 迁移以创建所有嵌套DB表、列等。
oknwwptz

oknwwptz2#

也许在某些地方使用者会打电话给User.name。当我们启动服务器时,django会检查数据库中可能没有迁移到我们数据库的列。
一个解决方案是尝试找出您在哪里调用了User.name并使用正确登录名。
或者尝试删除数据库和所有迁移文件;再次迁移。
删除数据库后

find . -path "*/migrations/*.py" -not -path "*/venv/*" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -not -path "*/venv/*" -delete
python manage.py makemigrations
python manage.py migrate
eh57zj3b

eh57zj3b3#

考虑删除迁移目录中的迁移,然后使用命令python manage.py migrate继续迁移。这适用于类似的问题,我已经执行了这一行。

kkih6yb8

kkih6yb84#

我遇到了类似的问题。这是由于在另一个www.example.com文件中导入了特定的模型model.py(从user.models import User)。只需删除导入,然后运行迁移。

相关问题