gpt4 book ai didi

python - 结合 django-filter DateTimeFromToRangeFilter 和 DateTimeInput(datepicker)

转载 作者:行者123 更新时间:2023-12-01 08:18:39 24 4
gpt4 key购买 nike

使用django_filterdatetimeinput作为日期选择器,我尝试添加日期和时间输入、FROM 和 TO 字段。

我只能使用来自 django 表单或 django 过滤器 DateTimeFromToRangeFilter 的一个字段的日期输入不显示日期选择器(仅手动文本输入)。

这是我的filter_model.py,用于带有日期选择器的一个字段。

from app.models.api_status import ApiStatus
import django_filters
from django import forms

class DateTimeInput(forms.DateTimeInput):
input_type = 'date'

# working solution for just 1 date field
class ApiStatusFilter(django_filters.FilterSet):
date_time = django_filters.DateFilter(
label=('With start date'),
lookup_expr=('icontains'), # use contains,
widget=DateTimeInput()
)
class Meta:
model = ApiStatus
fields = ['id', 'date_time']

图片显示了一个可点击的日期选择器弹出窗口。

enter image description here

这是我的 filter_model.py 两个字段,FROM 和 TO,没有日期选择器。

from app.models.api_status import ApiStatus
import django_filters
from django import forms

class DateTimeInput(forms.DateTimeInput):
input_type = 'date'


class ApiStatusFilter(django_filters.FilterSet):
date_time =django_filters.DateTimeFromToRangeFilter()

class Meta:
model = ApiStatus
fields = ['id', 'date_time']
widgets = {
'date_time': forms.DateTimeInput(attrs={'placeholder':'Select a date'})
}

下图显示了没有日期选择器弹出窗口的手动文本输入。 enter image description here

这是我的模板文件,尽管在尝试上述两种方法时我没有对其进行太多更改。status_template.html

{% load static %}

<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" type="text/css" href="{% static 'css/table_styling.css' %}">
<meta charset="UTF-8">
<title>Test Site</title>
{% comment %}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
{% endcomment %}
</head>

<body>
<table>
<thead>
<tr>
{% for keys in dictionarys.keys %}
<th>{{ keys }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
<form method="get">
{{ apistatus_filter.form.as_p }}
<button type="submit">Search</button>
{% for user in dataqs.object_list %}
<tr>
<td>{{ user.id }}</td>
<td>{{ user.date_time }}</td>
{% endfor %}
</form>
</tbody>
</table>
{% comment %} <script>
$( function() {
$("#datepicker").datepicker();
} );
</script> {% endcomment %}
</body>
</html>

我确实在这里和其他地方研究了各种来源。我尝试使用 MultiWidget 和 jQuery,但还没有成功。想法?提前致谢。

最佳答案

可以使用 JavaScript 使范围字段具有 datepicker 类。

我正在努力让 jQuery 日期选择器与 Django Filters 中的 DateTimeFromToRangeFilter 结合使用 RangeWidget。由于某种原因,RangeWidget 似乎不接受class: datepicker

过滤器.py:

dtoriginal = django_filters.DateTimeFromToRangeFilter(lookup_expr='icontains',
widget=django_filters.widgets.RangeWidget(
attrs={
'placeholder': 'yyyy-mm-dd',
},
),
label = 'Date Original'
)

我更改了搜索模板 html 以包含以下脚本:

<form method="get">
{{ filter.form.as_p }}

<script>
$(function () {
$("id_dtoriginal_0").datepicker();
$("id_dtoriginal_1").datepicker();
});
</script>

{% if filter.is_bound %}
<button onclick=...></button
{% endif %}
</form>

其中dtoriginal是模型中字段的名称。 _0_1RangeWidget 创建的“from”和“to”字段。

希望这有帮助,我花了几个小时试图弄清楚如何通过 django-filters 来做到这一点,但没有运气。

关于python - 结合 django-filter DateTimeFromToRangeFilter 和 DateTimeInput(datepicker),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54825483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com