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