- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在从现有数据库构建 Django 项目。该数据库正被其他系统使用,因此我无法更改其架构。这是我当前的自定义用户模型:
class Users(AbstractBaseUser):
id_user = models.IntegerField(primary_key=True)
role = models.IntegerField()
username = models.CharField(max_length=50, unique=True)
last_login_date = models.DateTimeField()
AbstractBaseUser 需要一个名为 last_login
的列,而当前数据库表有 last_login_date
列,其作用类似于 AbstractBaseUser.last_login
。现在我需要在 Users.last_login
中使用该列:
...
last_login = models.DateTimeField(_('last login'), default=timezone.now, column_name='last_login_date')
...
但是 Django 会抛出 django.core.exceptions.FieldError: Local field 'last_login' in class 'Users' clashes with field of similar name from base class 'AbstractBaseUser'
因为 Django 不允许覆盖 parent 的领域。
如何设置字段?
最佳答案
虽然有一个答案已经满足了我想贡献的另一种方式,以更稳健的方式完成相同的任务。
如您所知,Django AbstractBaseUser 是应该用来替代 Django 用户类的基类。这样一个类继承自models.Modelwith是真正创建模型的类。
此类利用 python 数据模型的元类来改变创建过程。
而这正是我们应该做的。正如您在 Python Data Model 上看到的那样您可以使用 metaclass 特殊属性来改变创建过程,如您所见。在您的情况下,您可以执行以下操作:
def myoverridenmeta(name, bases, adict):
newClass = type(name, bases, adict)
for field in newClass._meta.fields:
if field.attname == 'last_login':
field.column = 'last_login_date'
field.db_column = 'last_login_date'
return newClass
class Users(AbstractBaseUser):
id_user = models.IntegerField(primary_key=True)
role = models.IntegerField()
username = models.CharField(max_length=50, unique=True)
__metaclass__ = myoverridenmeta
关于python - Django 自定义用户字段与 AbstractBaseUser 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27468136/
我在 Django 1.6 中有以下代码,它可以很好地使用电子邮件作为用户名。但我想检查电子邮件是否在电子邮件字段中设置,如果未设置,则会引发验证错误。另外,我想检查一下电子邮件表达是否正确。我已阅读
我热衷于学习 Django 的源码,以从底层开始培养我的技能。 在用户模型中,它有 password属性。使用命令 from django.contrib.auth.models import Use
我正在尝试设置一个应用程序来处理有关注册用户的评论。因此,在我的 Review 模型中,我希望为我的 User 模型添加一个外键。 我正在使用如下所示的自定义用户配置文件: #In /profiles
我有一个包含特定字段的 Django 应用程序,所以我决定创建一个新的用户模型。我一直在仔细阅读文档,但我无法全神贯注地从 here 扩展 AbstractBaseUser 和 BaseUserMan
Django 1.9 Python 3.4 我使用 AbstractBaseUser 类创建了一个自定义用户模型。下面是代码。 class UserModel(AbstractBaseUser):
当我可以将任何字段提供给 User 模型时,这两者之间有什么区别?AbstractBaseUser 的目的是什么?哪个更适合与 python-social-auth 一起使用? class User(
我正在从现有数据库构建 Django 项目。该数据库正被其他系统使用,因此我无法更改其架构。这是我当前的自定义用户模型: class Users(AbstractBaseUser): id_u
如何将组功能添加到我的自定义 django 用户模型?我看到我能够继承 PermissionsMixin 但我没有看到这样做的任何组功能。基本上,我需要能够将自定义组添加到自定义用户模型。 最佳答案
我创建了一个用户应用程序MyUser这是 AbstractBaseUser 的扩展。我的印象是型号MyUser将取代标准Auth.User ,只要是settings.py中提到的 AUTH_PROFI
像许多其他人一样,我正在尝试将我的 Django 应用程序配置为使用电子邮件作为用户名字段。我有一些现有的用户帐户,我成功迁移到自定义用户模型,但现在自定义模型与 Django 用户模型相同: # a
我有一个基于 Django doc 创建的现有自定义用户模型进行基于电子邮件的身份验证。 我想扩展模型以拥有多种用户类型,例如客户、培训师和作者。 我不知道如何继续前进以及扩展这一点的最佳方式是什么?
我现在花了一个多小时才让我的自定义 User 类作为 Django CMS 1.8.8 中的默认类工作。 我创建了一个名为 authentication 的新应用,并将我的自定义用户模型 Accoun
AbstractUser 和AbstractBaseUser 的使用看起来很相似。 from django.contrib.auth.models import AbstractUser, Abstr
我正在尝试在 models.py 中使用我的 Person 类作为用户。不过我尝试使用 AbstractUser 和 AbstractBaseUser。在我尝试登录的部分,它们都给了我错误,我尝试了多
我注意到当我们登录 Django 时,我们不再是 AnonymousUser(在 models.py 中),而是成为 AbstractBaseUser(在 models.py 中)。 django 如
我是 django 的新手。我像下面这样编写我的 Django 用户模型和用户管理器: 用户管理器: class UserManager(BaseUserManager): def creat
在为项目手动设置 PostgreSQL数据库后,尝试迁移数据库时遇到此错误。 当出现此错误时,我试图运行从github fork 的克隆的quora项目。 请遵循完整的错误描述: RuntimeErr
我是一名优秀的程序员,十分优秀!