使用Django 2.0,我用我自己的用户模型替换了内置的django.contrib.auth,并使用AbstractUser扩展它。 Users模型依赖于MySQL中的现有表,该表配置为与Django一起使用。 Django在执行检查时没有发现任何问题;但是,我收到以下错误:
OperationalError at / (1054, "Unknown column 'users.last_login' in 'field list'")
我在列表中添加了这个列,认为这将是一个有用的字段,但是我很担心,因为我认为我的另一个错误字段会出现另一个错误。罗,看哪:
OperationalError at / (1054, "Unknown column 'users.is_superuser' in 'field list'")
替换用户模型的重点是,我可以放弃不重要的字段,例如“用户名”。我是否只需要将每列添加到表中,直到我获得表中的所有auth字段,或者我做了一些根本错误的事情?
TL; DR:如何使用现有表为Django创建自定义身份验证方法?
答案 0 :(得分:1)
正如您所说,您收到这些错误,因为您的表没有AbstractUser
模型中定义的字段列。最简单的解决方案是将所有缺少的字段添加到表中。
或者,如果您想避免这种情况,您可以改为使用您的用户模型子类AbstractBaseUser
。此抽象模型仅包含password
和last_login
的字段。请注意,这种方法将会更加有效。这似乎是如何做到的好指南:
https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html