implement custom filter
This commit is contained in:
parent
4a5e61e2b0
commit
9fae2d95ca
|
@ -2,6 +2,49 @@ from django.contrib.gis import admin
|
||||||
from models import *
|
from models import *
|
||||||
from django import forms
|
from django import forms
|
||||||
|
|
||||||
|
|
||||||
|
class FeatureTypeFilter(admin.SimpleListFilter):
|
||||||
|
# Human-readable title which will be displayed in the
|
||||||
|
# right admin sidebar just above the filter options.
|
||||||
|
title = _('Feature Type')
|
||||||
|
|
||||||
|
# Parameter for the filter that will be used in the URL query.
|
||||||
|
parameter_name = 'feature_type'
|
||||||
|
|
||||||
|
def lookups(self, request, model_admin):
|
||||||
|
"""
|
||||||
|
Returns a list of tuples. The first element in each
|
||||||
|
tuple is the coded value for the option that will
|
||||||
|
appear in the URL query. The second element is the
|
||||||
|
human-readable name for the option that will appear
|
||||||
|
in the right sidebar.
|
||||||
|
"""
|
||||||
|
fts = tuple()
|
||||||
|
for ft in FeatureType.objects.all():
|
||||||
|
if ft.feature_set.count() > 0:
|
||||||
|
t = (ft.id, ft.__unicode__(),)
|
||||||
|
fts.append(t)
|
||||||
|
|
||||||
|
return (
|
||||||
|
fts,
|
||||||
|
)
|
||||||
|
|
||||||
|
def queryset(self, request, queryset):
|
||||||
|
"""
|
||||||
|
Returns the filtered queryset based on the value
|
||||||
|
provided in the query string and retrievable via
|
||||||
|
`self.value()`.
|
||||||
|
"""
|
||||||
|
# Compare the requested value (either '80s' or 'other')
|
||||||
|
# to decide how to filter the queryset.
|
||||||
|
val = self.value()
|
||||||
|
return queryset.filter(feature_type=val)
|
||||||
|
|
||||||
|
|
||||||
|
class PersonAdmin(ModelAdmin):
|
||||||
|
list_filter = (DecadeBornListFilter,)
|
||||||
|
|
||||||
|
|
||||||
class FeatureNamesInline(admin.StackedInline):
|
class FeatureNamesInline(admin.StackedInline):
|
||||||
model = Name
|
model = Name
|
||||||
extra = 0
|
extra = 0
|
||||||
|
@ -28,6 +71,7 @@ class FeatureAdmin(admin.OSMGeoAdmin):
|
||||||
inlines = [FeatureNamesInline]
|
inlines = [FeatureNamesInline]
|
||||||
list_display = ('__unicode__', 'feature_type_name', 'time_start', 'time_end',)
|
list_display = ('__unicode__', 'feature_type_name', 'time_start', 'time_end',)
|
||||||
list_per_page = 12
|
list_per_page = 12
|
||||||
|
list_filter = ('feature_type__feature_class',)
|
||||||
openlayers_url = 'http://openlayers.org/dev/OpenLayers.js'
|
openlayers_url = 'http://openlayers.org/dev/OpenLayers.js'
|
||||||
openlayers_img_path = None
|
openlayers_img_path = None
|
||||||
form = featuresForm
|
form = featuresForm
|
||||||
|
|
Loading…
Reference in New Issue
Block a user