我有一个相当大的CMS,包含许多模块,并且使用Django权限调节访问权限。每个应用程序都有一个UserProfile模型,其User对象为ForeignKey。我希望能够在每个应用程序中轻松查找和创建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)
返回的错误是:"模型用户已注册"。我理解它为什么会发生,我很欣赏我可能以不同的方式实现相同的功能。我想要实现的是隔离基础对象(用户)和附加的应用程序配置文件对象的编辑。我当然看到我可以在CreateView中为UserProfile创建一个自动完成字段,但有时您需要为每个应用程序提供不同的过滤工具(过滤/反对用户属性)以及需要隐藏用户的一些用户信息。每个应用程序。
基本上:我如何在django.contrib.admin中针对同一模型构建多个视图并将其注册到admin.site.register?
答案 0 :(得分:2)
找到了this,它部分地解决了这个难题:
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)