gpt4 book ai didi

python - 在 Django 中创建自定义用户模型时,从 models.Model 和 AuthUser 继承有什么区别?

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

我见过两种在 Django 中扩展用户模型的方法。

方法一:

class User(AuthUser):
new fields...

方法二:

class MyUser(models.Model):
user = models.OneToOneField(User)
new fields...

它们有什么区别?

最佳答案

第一个是multi table inheritance . (我假设你实际上是在说 django.contrib.auth.models.User 在这里)。您的新用户模型将具有 Django 用户模型中定义的所有字段。这是由 django 管理的,在您的模型上隐式创建一个 OneToOneField。

第二种,您自己创建 OneToOneField。现在 django.contrib.auth.model.User 模型的字段不会自动显示为您自己的模型的一部分。您仍然可以访问它们作为

 myinstance.user.parent_field

综上所述,对于选项 1 you should inherit from an abstract base class而不是直接来自用户模型。

class MyUser(AbstractBaseUser):
...

关于python - 在 Django 中创建自定义用户模型时,从 models.Model 和 AuthUser 继承有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41867534/

25 4 0
文章推荐: javascript - 是否可以根据 y 轴值突出显示 Dimple.js 条形图中的条形?
文章推荐: html - 如何让我的导航在不同的屏幕尺寸上显示完整?
文章推荐: html - 滚动表格时如何使 的第一列不可移动?