gpt4 book ai didi

python - Django : Adding a property to the User class. 在运行时更改它和 UserManager.create_user

转载 作者:行者123 更新时间:2023-11-28 21:30:55 25 4
gpt4 key购买 nike

由于各种复杂的原因[1]我需要向 Django User 类添加额外的属性。

我无法使用配置文件或“继承”方式来执行此操作。 (如 Extending the User model with custom fields in Django )

所以我一直在做的是将 User 类包含在我的 local_settings 文件中。并将属性添加到其中。

也许令人惊讶的是,这似乎在很多情况下都有效。但当我从 UserManager.create_user() 创建新用户时则不然。所以我需要修补 UserManager.create_user() 方法的替代方法。查看此源代码(在 contrib.auth.models.py 中),我发现它用于创建用户的类保存在名为 UserManager.model 的属性中,而不是直接引用。

该行是这样的:

user = self.model(None, 用户名, '', '', email.strip().lower(), 'placeholder', False, True, False, now, now)

问题是这个 self.model (我假设它包含对 User 类的引用)似乎不是我的修补版本。

那么,有谁知道在 UserManager 的情况下这个 self.model 是在哪里设置的?我是否正确地假设此时代码尚未经过 local_settings,因此我对 User 类的补丁不存在?是否有更好的地方来修补类?

干杯

菲尔

[1] 满足当前io.我需要使 User 类使用数据库中不同的现有表,该表具有额外的字段和约束。

更新:供将来引用,看起来代理模型是 Django 支持我需要的方式:http://code.djangoproject.com/ticket/10356

最佳答案

拥有特定于站点的用户字段的常用方法是在 settings.py 中指定用户配置文件表。然后,您可以通过 u.user_profile() 方法检索特定设置。文档中有详细记录。

关于python - Django : Adding a property to the User class. 在运行时更改它和 UserManager.create_user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com