[英]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.2python-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.