SORU
12 Mayıs 2009, Salı


Varsayılan Django admin filtresi

Nasıl varsayılan filtre seçimi değiştirebilir miyim 'HEPSİ'? Üç değeri olan bir alan status Adı: activate, pending rejected. Django admin list_filter kullanırken, filtre varsayılan olarak 'Tüm' ama varsayılan olarak bekleyen ayarlamak istiyorum. ayarlanır

CEVAP
15 Mayıs 2013, ÇARŞAMBA


Bunu başarmak içinvebir kullanılabilir 'Tüm' bağlantı içinde Kenar Çubuğu (ıe biri olduğunu gösteriyor her yerine gösteren beklemede) Zorundasınız oluşturmak için özel bir liste filtre, devralmasını django.contrib.admin.filters.SimpleListFilter ve süzme 'bekleyen' varsayılan olarak. Bu satırlar boyunca bir şey olmalı

from datetime import date

from django.utils.translation import ugettext_lazy as _
from django.contrib.admin import SimpleListFilter

class StatusFilter(SimpleListFilter):
    title = _('Status')

    parameter_name = 'status'

    def lookups(self, request, model_admin):
        return (
            (None, _('Pending')),
            ('activate', _('Activate')),
            ('rejected', _('Rejected')),
            ('all', _('All')),
        )

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

    def queryset(self, request, queryset):
        if self.value() in ('activate', 'rejected'):
            return queryset.filter(status=self.value())    
        elif self.value() == None:
            return queryset.filter(status='pending')


class Admin(admin.ModelAdmin): 
    list_filter = [StatusFilter] 

EDİT: Gerektirir Django 1.4 (teşekkürler Simon)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • infiniTuts

    infiniTuts

    18 Ocak 2012
  • isupportthegosselins

    isupporttheg

    6 Aralık 2009
  • Learn word 2013 tutorials

    Learn word 2

    5 AĞUSTOS 2014