2

多くのモジュールを備えたかなり大規模な CMS を使用しており、Django 権限でアクセスを規制しています。各アプリには、User オブジェクトを ForeignKey として持つ UserProfile モデルがあります。各アプリ内で UserProfile オブジェクトを簡単に検索および作成できるようにしたいと考えています。Inlines を使用して次のようにしたかった (project/app/admin.py から):

class InlineModelForUser(admin.TabularInline):
    model = User
    extra=0

class UserSettings(admin.ModelAdmin):
    search_fields = ['username', 'name']
    readonly_fields = ['username','name', 'otherproperites']
    inlines = [InlineModelForUser,]

admin.site.register(User, UserSettings)

返されるエラーは次のとおりです:「モデル ユーザーは既に登録されています」。なぜそれが起こっているのかを理解しており、おそらく同じ機能を別の方法で実装できることに感謝しています。私が達成しようとしているのは、ベース オブジェクト (ユーザー) の編集と添付されたアプリ プロファイル オブジェクトを分離することです。もちろん、UserProfile の CreateView でオートコンプリート フィールドを作成できることはわかりますが、アプリごとに異なるフィルタリング ツール (ユーザー プロパティのフィルタリング) を提供する必要があり、一部のユーザー情報をユーザーから非表示にする必要がある場合もあります。各アプリ。

基本的に: django.contrib.admin 内で同じモデルに対して複数のビューを作成し、それを admin.site.register に登録するにはどうすればよいですか?

4

1 に答える 1

3

これを見つけて、ジレンマに部分的に答えます:

class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'pubdate','user')

class MyPosts(Post):
    class Meta:
        proxy = True

class MyPostAdmin(PostAdmin):
    def queryset(self, request):
        return self.model.objects.filter(user = request.user)

admin.site.register(Post, PostAdmin)
admin.site.register(MyPost, MyPostAdmin)
于 2014-10-09T10:53:00.630 に答える