Open
Description
I'm having some trouble getting the Django Admin's SimpleListFilter
to work with SortableAdmin
.
I've created a simple models.py
and admin.py
to demonstrate this.
The error happens when a user clicks on "Past" or "Upcoming" to filter the dates while they are on the "Sortable date" list page.
models.py:
from django.db import models
from adminsortable.models import SortableMixin
class SortableDate(SortableMixin):
date = models.DateField()
order = models.IntegerField(editable=False, db_index=True)
class Meta:
ordering = ('order',)
def __str__(self):
return self.date.strftime("%d-%b-%Y")
class NonSortableDate(models.Model):
date = models.DateField()
def __str__(self):
return self.date.strftime("%d-%b-%Y")
admin.py
from django.contrib import admin
from adminsortable.admin import SortableAdmin
from .models import SortableDate, NonSortableDate
from django.utils import timezone
class ClassOptionDateFilter(admin.SimpleListFilter):
title = 'date'
parameter_name = 'relative_date'
def lookups(self, request, model_admin):
return (
('past', 'Past'),
('upcoming', 'Upcoming'),
)
def queryset(self, request, queryset):
today = timezone.now().date()
if self.value() == 'past':
return queryset.filter(date__lte=today)
if self.value() == 'upcoming':
return queryset.filter(date__gt=today)
@admin.register(SortableDate)
class SortableDateAdmin(SortableAdmin):
# Applying a list filter on this causes this error:
# "FieldError at /admin/core/sortabledate/"
# "Cannot resolve keyword 'is_upcoming' into field. Choices are: date, id, order"
list_filter = (ClassOptionDateFilter,)
@admin.register(NonSortableDate)
class NonSortableDateAdmin(admin.ModelAdmin):
# This works fine because it's in a normal ModelAdmin
list_filter = (ClassOptionDateFilter,)
is SortableAdmin
just not meant to be compatible with SimpleListFilter
?
Metadata
Metadata
Assignees
Labels
No labels