簡體   English   中英

管理員中的Django OneToOne字段

[英]Django OneToOne field in admin

這是Django中的模型:

class Member(models.Model):
    user     = models.OneToOneField(User)
    moredata = models.CharField('More data', max_length=255)

我想將所有用戶字段放在Django管理員的該模型的“編輯/創建”頁面中。 所以我這樣做:

class UserInline(admin.StackedInline):
    model = User

class MemberAdmin(admin.ModelAdmin):
    inlines = [
        UserInline,
    ]

admin.site.register(Member, MemberAdmin)

但是Django表示User上沒有Member的外鍵,這是完全正確的。 有沒有辦法解決這個問題?

如果我不使用admin類,那么我得到的只是一個可供選擇的用戶列表。

理想情況下,我希望管理員不能看到User類型,並讓他們僅創建和編輯派生的用戶類型。

我應該擴展實際的User類型,而不是OneToOne關系嗎?

正如我們在聊天中所討論的,內置的User對象旨在在管理站點中使用。 但就您而言,這對您的模型是無關緊要的,只會增加局限性和復雜性。

在這種情況下,最好的方法是將您自己的模型用作獨立的用戶類,並使用內置的用戶作為管理員(或完全不使用)。 為此,您需要子類AbstractBaseUser並按照此處的說明進行操作:

https://docs.djangoproject.com/en/dev/topics/auth/customizing/#specifying-a-custom-user-model

它確實非常詳細,如果您遇到任何麻煩,請回到這里,以便有人一定會為您提供幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM