7

私は逆に多くの質問を見てきましたが、それらには次のようなものがあります。

class UserProfileInline(admin.StackedInline):
    model = UserProfile
    can_delete = False
    verbose_name_plural = 'profile'

class NewUserAdmin(UserAdmin):
    inlines = (UserProfileInline, )

admin.site.unregister(User)
admin.site.register(User, NewUserAdmin)

私がやりたいのはその逆ですが、それが機能するようには見えません。これが私が持っているコードで、動作していません。

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from myapp.models import SpecialUserType

class UserInline(admin.StackedInline):
    model = User
    can_delete = False

class IncludeUserAdmin(admin.ModelAdmin):
    inlines = (UserInline,)

admin.register(SpecialUserType, IncludeUserAdmin)

Userの管理者でインラインになるようにするにはどうすればよいSpecialUserTypeですか?

私が得ているエラーは次のとおりです。

<class 'django.contrib.auth.models.User'> has no ForeignKey to <class 'students.models.SpecialUserType'>

は明らかに ではなくモデルにOneToOneField格納されているため、これは理にかなっています。しかし、どうすればそれを逆にすることができますか?SpecialUserTypeUserOneToOneField

(これは珍しいことのように思えるかもしれませんが、管理者をこのように設定し、その逆ではなく設定したいのには十分な理由があります。)

4

1 に答える 1

2

残念ながらそれはできません。私は何度か自分の前で問題に遭遇しました。

エラー メッセージにあるように、インライン モデルには、メイン モデルを指す ForeignKey (または OneToOneField) が必要です。

他の人が述べたように、私は User のサブクラス化が私にとって非常に役立つことを発見しました:

class UserProfile(User):
    user = OneToOneField(User, parent_link=True)
    # more fields, etc
于 2014-02-05T21:25:52.807 に答える