繁体   English   中英

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

[英]When creating a custom User model in Django what is the difference between inheriting from models.Model and AuthUser?

我已经看到了两种在Django中扩展User模型的方法。

方法1:

class User(AuthUser):
    new fields...

方法2:

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

他们之间有什么区别?

第一个是多表继承 (我认为你实际上是在讨论django.contrib.auth.models.User)。 您的新用户模型将包含django用户模型中定义的所有字段。 这是由django在模型上隐式创建OneToOneField来管理的。

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

 myinstance.user.parent_field

说完这一切后,对于选项1, 您应该从一个抽象基类继承,而不是直接从User模型继承

class MyUser(AbstractBaseUser):
   ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM