簡體   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