admin filter for date and datetime using <input>

This commit is contained in:
bkfox
2022-05-05 14:45:23 +02:00
parent 36f5ee8b44
commit e44b77d0b3
5 changed files with 30 additions and 19 deletions

View File

@ -1,11 +1,13 @@
from django.db import models
from django.contrib.admin import filters
from django.utils.translation import gettext_lazy as _
__all__ = ('DateFieldFilter',)
__all__ = ('DateFieldFilter', 'DateTimeField')
class DateFieldFilter(filters.FieldListFilter):
""" Display date input """
template = 'admin/aircox/filters/date_filter.html'
input_type = 'date'
@ -13,7 +15,6 @@ class DateFieldFilter(filters.FieldListFilter):
self.field_generic = '%s__' % field_path
self.date_params = {k: v for k, v in params.items()
if k.startswith(self.field_generic)}
self.links = ((_('Exact'), self.field_generic + 'exact'),
(_('Since'), self.field_generic + 'gte'),
(_('Until'), self.field_generic + 'lte'))
@ -30,3 +31,14 @@ class DateFieldFilter(filters.FieldListFilter):
'type': self.input_type,}
class DateTimeFieldFilter(DateFieldFilter):
""" Display datetime input """
input_type = 'datetime'
filters.FieldListFilter.register(
lambda f: isinstance(f, models.DateField), DateFieldFilter, take_priority=True)
filters.FieldListFilter.register(
lambda f: isinstance(f, models.DateTimeField), DateTimeFieldFilter, take_priority=True)