2014-10-09 4 views
2

과 함께 여러 가지 다른 구성의 동일한 모델을 등록하고 있습니다. 모듈이 많은 비교적 큰 CMS가 있고 Django 권한으로 액세스를 규제하고 있습니다. 각 앱에는 UserProfile 모델이 있고 User 개체는 ForeignKey입니다. 나는 각 응용 프로그램 내에서 UserProfile 객체를 쉽게 조회하고 생성 할 수 있기를 원합니다. 나는 (프로젝트/응용 프로그램/admin.py에서) 이런 식으로 할를 인라인을 사용하고 싶었다 "모델 사용자가 이미 등록"Django 관리자

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에 등록 할 수 있습니까?

+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)