使用Django admin为不同的应用程序在不同的配置中注册相同的模型

2024-04-27 15:39:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个相当大的CMS,有很多模块,并且使用Django权限来管理访问。每个应用程序都有一个UserProfile模型,其中一个User对象作为ForeignKey。我希望能够在每个应用程序中方便地查找和创建UserProfile对象。我想用内联这样做(从项目/应用程序/管理员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创建一个autocomplete字段,但是有时候你需要为每个应用提供不同的过滤工具(过滤用户属性),并且需要对每个应用的用户隐藏一些用户信息。在

基本上:我怎么能在django.contrib.admin针对同一模型构建多个视图并将其注册到admin.site.register?在


Tags: 对象用户name模型register应用程序fieldsadmin
1条回答
网友
1楼 · 发布于 2024-04-27 15:39:56

找到了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)

相关问题 更多 >