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ş:
Django çalışırken otomatik olarak admi...
Nasıl veritabanı/model bir nesne kaldı...
Django Admin - Devre dışı bırak '...
Django Kurulum Varsayılan Günlüğü...
Nasıl admin şifre Django sıfırlamak iç...