我试图在我的用户身份验证模型中添加一个新字段。但是每当我试图运行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
关于这个问题的任何建议/提示将是一个很大的帮助。
4条答案
按热度按时间fafcakar1#
尝试运行:
数据库中的列似乎尚未创建。如果不起作用:
oknwwptz2#
也许在某些地方使用者会打电话给User.name。当我们启动服务器时,django会检查数据库中可能没有迁移到我们数据库的列。
一个解决方案是尝试找出您在哪里调用了User.name并使用正确登录名。
或者尝试删除数据库和所有迁移文件;再次迁移。
删除数据库后
eh57zj3b3#
考虑删除迁移目录中的迁移,然后使用命令
python manage.py migrate
继续迁移。这适用于类似的问题,我已经执行了这一行。kkih6yb84#
我遇到了类似的问题。这是由于在另一个www.example.com文件中导入了特定的模型model.py(从user.models import User)。只需删除导入,然后运行迁移。