2016-05-24 11 views
1

Ich habe folgendes ListFilter:Django admin, wie die Abfrageparameter auf den nächsten Filter halten

class ProductCountryListFilter(admin.SimpleListFilter): 
    title = _('country') 
    parameter_name = 'country' 

    def lookups(self, request, model_admin): 
     unused = request.GET.get('unused', 0) 
     _countries = Product.objects.values_list('loc_country_code', flat=True).order_by(
     'loc_country_code').distinct() 
     return [(c, countries[c]) for c in _countries] 

    def queryset(self, request, queryset): 
     country = request.GET.get('country') 

     return queryset if country is None else queryset.filter(
      loc_country_code=country 
     ) 

Die Ausgabe in HTML-Code für diese ist:

<a href="?country=DE">Deutschland</a> 

ich das hinzufügen möchten href der Parameter 'ungenutzt', also im Grunde möchte ich dieses Ergebnis:

<a href="?country=DE&unused=0">Deutschland</a> 

Antwort

0
def choices(self, cl): 
     yield { 
      'selected': self.value() is None, 
      'query_string': cl.get_query_string({}, [self.parameter_name]), 
      'display': _('All'), 
     } 
     for lookup, title in self.lookup_choices: 
      yield { 
       'selected': self.value() == force_text(lookup), 
       'query_string': cl.get_query_string({ 
       self.parameter_name: lookup, 
       }, []), 
       'display': title, 
      } 

Diese Methode von SimpleListFilter ist verantwortlich für die Generierung der URLs.

Dies ist der HTML-Code für Filter:

https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/filter.html