2012-12-20 3 views
3

내 모델을 관리자 색인의 다른 블록으로 분리하고 싶습니다 (this question 참조).모든 모델에 속성 추가

이를 달성하기 위해 모든 모델에 "admin_group"속성을 추가하고 싶습니다. 그런 다음 AdminSite.app_index을 덮어 쓰고 admin/app_index.html 사용자 정의를 작성하여 "admin_group"별로 모델을 그룹화하고이를 내 관리자 색인의 다른 블록에 표시하십시오.

아래 그림과 같이 난 그냥 내 모델에 속성 "하고 Admin_Group"를 추가 할 수 있습니다

class model1(models.Model): 
    # ... 
    admin_group = "group1" 

class model2(models.Model): 
    # ... 
    admin_group = "group1" 

class model3(models.Model): 
    # ... 
    admin_group = "group2" 

하지만 난 청소기 해결책이 있는지 여부 궁금하네요.

참고 : 메타 요청이 데이터베이스 요청을 망쳐 놓기 때문에 app_label 메타 옵션을 사용하고 싶지 않습니다.

+0

참조 : http://stackoverflow.com/questions/7505006/customize-django-admin-index-page-to-display-model-objects 메타에서이 속성을 추가 할 수 있습니다. – danihp

+0

은 "group1", "group2"가 필요하거나 값을 비워 둘 수 있습니까? –

+0

@danihp : 나는 장고 코어를 수정하지 않는 것을 선호한다. – jul

답변

2

해당 그룹 필드로 Parent 클래스를 만들고 Parent 클래스로 모든 모델 클래스를 상속 할 수 있습니다.

class Parent(models.Model): 
    GROUP_CHOICES = [ 
     (u'1', u'Group1'), 
     (u'2', u'Group2'), 
     ... 
     ] 
    admin_group = models.CharField(_("Admin group"), max_length=1, choices = GROUP_CHOICES) 

class model1(Parent): 
    # ... 


class model2(Parent): 
    # ... 

model1model2 지금 admin_group 필드가 있습니다.

관련 문제