2009-05-13 3 views
3
DECOM_CHOICES = (
    ('N', 'No'), 
    ('Y', 'Yes'), 
) 

class Host(models.Model): 
    hostname = models.CharField(max_length=36, unique=True) 
    decommissioned = models.CharField(max_length=1, choices=DECOM_CHOICES, default='N') 
    ip_address = models.IPAddressField() 
    def __unicode__(self): 
     return self.hostname 

class HostAdmin(admin.ModelAdmin): 
    fieldsets = [ 
     ('Host Info', {'fields': ['hostname','decommissioned','ip_address']}), 
    list_display = ('hostname', 'ip_address', 'decommissioned') 
    list_filter = ('decommissioned') 

지금은 기본적 대신 'All'에 의해 'N'에 해제 된 필터를 설정할 수 있도록 모든 방법은 무엇입니까?list_filter

+1

http://code.djangoproject.com/ticket/8851 –

답변

0

요청 개체의 GET 데이터를 수정하여 changelist_view()으로 전달하면됩니다. 우아하지 않지만 작동합니다.

class MyModelAdmin(admin.ModelAdmin):  
    def changelist_view(self, request, extra_context=None): 
     if not request.GET.has_key('decommissioned__exact'): 
      q = request.GET.copy() 
      q['decommissioned__exact'] = 'N' 
      request.GET = q 
      request.META['QUERY_STRING'] = request.GET.urlencode() 
     return super(MyModelAdmin,self).changelist_view(request, extra_context=extra_context) 

참고 :는 여기이 정확한 코드를 시도하지 않은, 그러나 당신은 생각을해야한다.

+0

이 있습니까 대신 'gerdemb'에 의해 주어진 위 sulution에 주어진 조건을 저장 솔루션과 함께 '모든'링크를 만들 수있는 방법은 무엇입니까? –

0

기본 필터 값 설정에 대한 설명에 해결 방법이있는 Django ticket에서 코드를 거의 정확하게 사용하는 것처럼 보입니다. 현재이 작업을 수행하는 특별한 방법이 없습니다.

마찬가지로 - 예 또는 아니요를 저장하고 있기 때문에 부울 필드를 사용하는 것이 더 좋지 않습니까?

0

if ('HTTP_REFERER'in request.META) 및 (request.META [ 'HTTP_REFERER']) find ('?') == -1) 및 (request.GET.has_key ('status__exact'가 아닌) : 모든도를 선택할 수 있도록

사용이

관련 문제