2009-11-06 9 views
4

Dans l'administrateur Django, l'utilisateur peut définir des filtres qui limitent les lignes affichées dans la liste des modifications. Comment puis-je obtenir une instance QuerySet avec des filtres définis comme définis par la chaîne de requête? Par exemple, si je passe? Start_date_gte = 2009-11-06, l'administrateur de Django appliquera un qs.filter (start_date__gte ...) quelque part. Comment puis-je accéder à un tel QuerySet?Django Admin: Obtenir un QuerySet filtré selon la chaîne GET, exactement comme vu dans la liste des changements?

J'ai besoin de cela car évidemment je ne veux pas réécrire le code qui prend ces paramètres GET et filter() s un QuerySet en conséquence.

Répondre

8

Cela semble intéressant. Cependant, je parlais d'utiliser ce QuerySet dans l'Admin. Trouvé la réponse, voir ci-dessous:

class MyAdmin(admin.ModelAdmin): 
    def changelist_view(self, request, extra_context=None): 
    from django.contrib.admin.views.main import ChangeList 
    cl = ChangeList(request, self.model, self.list_display, self.list_display_links, self.list_filter, self.date_hierarchy, self.search_fields, self.list_select_related, self.list_per_page, self.list_editable, self) 
    # getting query set with same filters like current change list 
    filtered_query_set = cl.get_query_set()