2014-10-09 71 views
2

我有一個相當大的CMS,包含很多模塊,並且正在使用Django權限管理訪問。每個應用程序都有一個UserProfile模型和一個User對象作爲ForeignKey。我希望能夠在每個應用程序中輕鬆查找和創建UserProfile對象。我想用內聯做這樣的(從項目/應用/ admin.py):使用Django爲不同的應用程序註冊不同配置的相同模型admin

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中創建自動填充字段,但有時您需要爲每個應用程序提供不同的過濾工具(針對用戶屬性進行過濾),以及需要向用戶隱藏一些用戶信息每個應用。

基本上:我怎樣才能在django.contrib.admin建立對相同模型的幾個視圖,並註冊它與admin.site.register?

+0

什麼仍然從這個缺少的是代理對象需要它自己的權限。我不完全確定你將如何最好地實施它。我正在爲這個用例解決這個用例,但是如果我找到了一些優雅的東西,就會報告回來。 – 2014-10-09 11:29:43

回答

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) 
相關問題