首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django - OperationalError 1054,“‘字段列表’中的未知列'phpbb_users.password‘”

Django - OperationalError 1054,“‘字段列表’中的未知列'phpbb_users.password‘”
EN

Stack Overflow用户
提问于 2015-07-03 02:26:56
回答 1查看 467关注 0票数 0

我正在尝试创建一个自定义用户模型,以便与我的遗留用户表一起使用。密码字段称为user_password。我尝试覆盖AbstractBaseUser的password字段并添加一个db_column='user_password,使用

最后的[field for field in MyUser._meta.fields if field.name == "password"][0].db_column = "user_password"。这是我的模型:

代码语言:javascript
运行
复制
class MyUser(AbstractBaseUser, PermissionsMixin):

user_id = models.IntegerField(primary_key=True)
is_active = models.BooleanField(_('active'), default=True, db_column='user_active',
    help_text=_('Designates whether this user should be treated as '
                'active. Unselect this instead of deleting accounts.'))
username = models.CharField(max_length=25, unique=True)
# user_password = models.CharField(max_length=128, verbose_name='password', db_column=b'user_password')
user_session_time = models.IntegerField(default=0)
user_session_page = models.IntegerField(default=0)
user_lastvisit = models.IntegerField(default=0)
user_regdate = models.IntegerField(default=0)
user_level = models.IntegerField(blank=True, null=True)
user_posts = models.IntegerField(default=0)
user_timezone = models.DecimalField(max_digits=5, decimal_places=2, default=0.00)
user_style = models.IntegerField(blank=True, null=True)
user_lang = models.CharField(max_length=255, blank=True)
user_dateformat = models.CharField(max_length=14, default='d M Y H:i')
user_new_privmsg = models.IntegerField(default=0)
user_unread_privmsg = models.IntegerField(default=0)
user_last_privmsg = models.IntegerField(default=0)
user_emailtime = models.IntegerField(blank=True, null=True)
user_viewemail = models.IntegerField(blank=True, null=True)
user_attachsig = models.IntegerField(blank=True, null=True, default=1)
user_allowhtml = models.BooleanField(blank=True, default=True)
user_allowbbcode = models.BooleanField(blank=True, default=True)
user_allowsmile = models.BooleanField(blank=True, default=True)
user_allowavatar = models.BooleanField(default=True)
user_allow_pm = models.BooleanField(default=True)
user_allow_viewonline = models.BooleanField(default=True)
user_notify = models.BooleanField(default=False)
user_notify_pm = models.BooleanField(default=True)
user_popup_pm = models.BooleanField(default=False)
user_rank = models.IntegerField(blank=True, null=True)
user_avatar = models.CharField(max_length=100, blank=True)
user_avatar_type = models.IntegerField(default=0)
email = models.EmailField(max_length=255, blank=True, db_column='user_email')
user_icq = models.CharField(max_length=15, blank=True)
user_website = models.CharField(max_length=100, blank=True)
user_from = models.CharField(max_length=100, blank=True)
user_sig = models.TextField(blank=True)
user_sig_bbcode_uid = models.CharField(max_length=10, blank=True)
user_aim = models.CharField(max_length=255, blank=True)
user_yim = models.CharField(max_length=255, blank=True)
user_msnm = models.CharField(max_length=255, blank=True)
user_occ = models.CharField(max_length=100, blank=True)
user_interests = models.CharField(max_length=255, blank=True)
user_actkey = models.CharField(max_length=32, blank=True)
user_newpasswd = models.CharField(max_length=32, blank=True)
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=30, blank=True)
is_staff = models.BooleanField(_('staff status'), default=False,
    help_text=_('Designates whether the user can log into this admin '
                'site.'))
date_joined = models.DateTimeField(_('date joined'), default=timezone.now) #regdate

class Meta:
    managed = True
    db_table = 'phpbb_users'
    verbose_name = 'User'
    verbose_name_plural = 'Users'


objects = UserManager()

USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']

def get_full_name(self):
    return '%s, %s'  % (self.username, self.user_email)

def get_short_name(self):
    return self.username

def __str__(self):
    return self.username

接下来的事情,

[field for field in MyUser._meta.fields if field.name == "password"][0].db_column = "user_password"

我不能createasuperuser,甚至连runserver都不行。我得到了下面的堆栈跟踪:

代码语言:javascript
运行
复制
Traceback:
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  104.                     response = middleware_method(request, callback, callback_args, callback_kwargs)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/mezzanine/core/middleware.py" in process_view
  89.         if request.user.is_superuser:
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/utils/functional.py" in inner
  224.             self._setup()
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/utils/functional.py" in _setup
  357.         self._wrapped = self._setupfunc()
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/contrib/auth/middleware.py" in <lambda>
  22.         request.user = SimpleLazyObject(lambda: get_user(request))
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/contrib/auth/middleware.py" in get_user
  10.         request._cached_user = auth.get_user(request)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/contrib/auth/__init__.py" in get_user
  159.             user = backend.get_user(user_id)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/contrib/auth/backends.py" in get_user
  69.             return UserModel._default_manager.get(pk=user_id)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/models/manager.py" in manager_method
  92.                 return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/models/query.py" in get
  351.         num = len(clone)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/models/query.py" in __len__
  122.         self._fetch_all()
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/models/query.py" in _fetch_all
  966.             self._result_cache = list(self.iterator())
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/models/query.py" in iterator
  265.         for row in compiler.results_iter():
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in results_iter
  701.         for rows in self.execute_sql(MULTI):
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
  787.             cursor.execute(sql, params)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/backends/utils.py" in execute
  81.             return super(CursorDebugWrapper, self).execute(sql, params)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/backends/utils.py" in execute
  65.                 return self.cursor.execute(sql, params)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/utils.py" in __exit__
  94.                 six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/backends/utils.py" in execute
  65.                 return self.cursor.execute(sql, params)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py" in execute
  129.             return self.cursor.execute(query, args)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/MySQLdb/cursors.py" in execute
  205.             self.errorhandler(self, exc, value)
File "/home/pirave/work/dev_site/venv/local/lib/python2.7/site-packages/MySQLdb/connections.py" in defaulterrorhandler
  36.     raise errorclass, errorvalue

Exception Type: OperationalError at /admin/
Exception Value: (1054, "Unknown column 'phpbb_users.password' in 'field list'")

为什么它不能识别数据库中的user_password列?Makemigration检测到db_column对MyUser的更改,并显示在0001_initial.py中。

EN

回答 1

Stack Overflow用户

发布于 2015-07-03 03:36:44

代码语言:javascript
运行
复制
[field for field in AbstractBaseUser._meta.fields if field.name == "password"][0].db_column = "user_password"

上课前,似乎解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31192002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档