jazzband / jazzband/django-admin-sortable

admin.SimpleListFilter not working on SortableAdmin

Open
#242 4 comments 2 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
569
Forks
138
PR merge metrics
No merged PRs in 30d

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:
```python
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
```python
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`?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.