繁体   English   中英

Django:如何在管理模型中为日期范围过滤器设置初始值

[英]Django: how to set initial value for Date Range Filter in Admin Model

我是 Django 的新开发人员。 我有一个带有 Django 的管理站点。 我有一个包含 1.600.000 个注册表的表。 我需要按日期范围过滤,我需要在 Django 过滤器日期范围过滤器中定义开始日期和结束日期。

我在用,

Django==2.1.10
django-admin-rangefilter==0.5.0
虚拟环境==16.7.2

python-3.7.3

class TrackAdmin(ExportActionMixin,admin.ModelAdmin):

    list_display = ('timestamp', 'get_tipomarca','get_point','get_emp')
    search_fields = ('point_id', 'attendancetext')
    list_per_page=20
    list_filter = (
        ('timestamp', DateRangeFilter),
    )

我在 Django 的站点管理员中查看该过滤器。但我希望“从日期”的文本框有一个值,例如 23/08/2019,“至今”的文本框有今天的日期。 使用这个参数,我有一个过滤器,一个只需要注册表而不是所有表的查询。

这是我目前的观点:带有过滤器的当前视图并期望:使用过滤器的预期视图

import datetime start = datetime.datetime.strptime("21-06-2014", "%d-%m-%Y") end = datetime.datetime.strptime("07-07-2014", "%d-% m-%Y") date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end-start).days)]

// 并用你的函数返回范围,你还没有放。

在我的管理模型类中,添加了一个 list_filter 并且我确实覆盖了 def get_queryset(self, request):

    start = datetime(2019, 7, 1)
    end = datetime.now()
    qs.filter(timestamp__range=[start, end])

我用初始日期过滤了查询集,因此查询不会返回所有对象。(1.500.000 个对象)初始,使用 DataRangeFilter,我希望在小部件的文本框中设置默认值,但这不是必需的。

该库尝试访问每个字段的默认 getter。 请以这个 PR为例。

最终解决方案如下:

class TrackAdmin(ExportActionMixin,admin.ModelAdmin):

    list_display = ('timestamp', 'get_tipomarca','get_point','get_emp')
    search_fields = ('point_id', 'attendancetext')
    list_per_page=20
    list_filter = (
        ('timestamp', DateRangeFilter),
    )

    def get_rangefilter_timestamp_default(self, request):
        return ('2021-01-01', '2021-02-01')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM