admin filter for date and datetime using <input>
This commit is contained in:
parent
36f5ee8b44
commit
e44b77d0b3
|
@ -1,3 +1,4 @@
|
|||
from . import filters
|
||||
from .article import ArticleAdmin
|
||||
from .episode import DiffusionAdmin, EpisodeAdmin
|
||||
from .log import LogAdmin
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ from django.utils.translation import gettext_lazy as _
|
|||
from adminsortable2.admin import SortableInlineAdminMixin
|
||||
|
||||
from ..models import Category, Comment, NavItem, Page, StaticPage
|
||||
from .filters import DateFieldFilter
|
||||
|
||||
|
||||
__all__ = ('CategoryAdmin', 'PageAdmin', 'NavItemInline')
|
||||
|
@ -83,7 +82,7 @@ class PageAdmin(BasePageAdmin):
|
|||
|
||||
list_display = BasePageAdmin.list_display + ('category',)
|
||||
list_editable = BasePageAdmin.list_editable + ('category',)
|
||||
list_filter = BasePageAdmin.list_filter + ('category', ('pub_date', DateFieldFilter))
|
||||
list_filter = BasePageAdmin.list_filter + ('category', 'pub_date')
|
||||
search_fields = ('category__title',)
|
||||
fieldsets = deepcopy(BasePageAdmin.fieldsets)
|
||||
|
||||
|
|
|
@ -161,7 +161,8 @@ class Page(BasePage):
|
|||
Category, models.SET_NULL,
|
||||
verbose_name=_('category'), blank=True, null=True, db_index=True
|
||||
)
|
||||
pub_date = models.DateTimeField(blank=True, null=True)
|
||||
pub_date = models.DateTimeField(
|
||||
_('publication date'), blank=True, null=True, db_index=True)
|
||||
featured = models.BooleanField(
|
||||
_('featured'), default=False,
|
||||
)
|
||||
|
|
|
@ -1,20 +1,18 @@
|
|||
{% extends "./filter.html" %}
|
||||
{% load static %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
{% with choices|first as choice %}
|
||||
<form method="GET">
|
||||
<ul>
|
||||
{% for choice in choices %}
|
||||
<li>
|
||||
<label for="{{ choice.name }}">{{ choice.label }}</label>
|
||||
<input type="{{ choice.type }}" name="{{ choice.name }}"
|
||||
<ul>
|
||||
{% for choice in choices %}
|
||||
<div>
|
||||
<form method="GET">
|
||||
<label for="filter-{{ choice.name }}">{{ choice.label }}: </label>
|
||||
<input id="filter-{{ choice.name }}" type="{{ choice.type }}" name="{{ choice.name }}"
|
||||
value="{{ choice.value }}" {{ choice.extra }} />
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div style="text-align: right;">
|
||||
<input type="submit" value="Chercher">
|
||||
<button class="button"><img src="{% static "admin/img/search.svg" %}" /></button>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
|
Loading…
Reference in New Issue
Block a user