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

  • lissaandbeauty

    lissaandbeau

    24 Aralık 2011
  • pendrop gaming

    pendrop gami

    4 ŞUBAT 2013
  • skiesofblack.net

    skiesofblack

    14 HAZİRAN 2009