2011-03-18 3 views
14

대다 필드에 필터 . 예 :내가 간단한 장고 모델 닮은이

class AddressAdmin(admin.ModelAdmin): 
    model = Address 
    list_filter = [???] 

ModelAdmin.list_filter 속성이 있습니다,하지만 난 내 대다 관계를 지원하기 위해 사용하는 어떤 필드 이름을 모르겠어요. 간접 대다 관계에 대한 동등한 구문이 있나요

class AddressAdmin(admin.ModelAdmin): 
    model = Address 
    list_filter = ['memberdata__user'] 

: 주소 모델이 MemberData 모델에 대한 직접 참조가있는 경우, 내가 좋아하는 일을 할 수 있을까? 그렇지 않다면 같은 목적을 달성하기위한 해결 방법이 있습니까?

답변

6

이 경우에는 M2M 관계에 대해 through 모델을 사소하게 만들 수 있습니다. 그런 다음 일반 구문을 사용하여 (현재는 명시적인) ForeignKey을 따르십시오.

class Address(models.Model): 
    blah 

class MemberData(models.Model): 
    user = models.ForeignKey(User) 
    addresses = models.ManyToManyField(Address,through='MemberAddress') 

class MemberAddress(models.Model): 
    member = models.ForeignKey(MemberData) 
    address = models.ForeignKey(Address) 

및 관리자에 : 뭔가처럼

class AddressAdmin(admin.ModelAdmin): 
    model = Address 
    list_filter = ['memberaddress_set__member__user'] 
2

나는 1.5을 사용하고 있는데 작동하는 것처럼 list_filter = ['memberdata__user'] 보인다.