[英]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.