我在Django面临一些实现问题。我的应用程序从用户上传的excel中读取数据。它从中提取日期,如最早日期和最近日期。我能够以html格式显示这两个日期摘要,并允许用户自定义选择时间范围。(通过django表单.py). 为了获得更好的用户体验,我想在表单中创建一个日期范围滑块,它将允许用户使用。到目前为止,我能够找到一个名为Django_range_slider的Django包。(https://github.com/shaklev/django_range_slider/tree/master/test_slider)我也可以正确实现这个包的功能,只要我有一个整数值的范围。当我设置日期值的时候,它就不能很好地工作了。在
这是表单.py:
from django import forms
from .fields import RangeSliderField
from .models import TestModel
from django.forms.widgets import SelectDateWidget
class TestFieldForm(forms.Form):
class Meta:
model = TestModel
fields = ['range_field','name_range_field','label_range_field']
def __init__(self, *args, **kwargs):
super(TestFieldForm, self).__init__(*args, **kwargs)
self.fields['name_range_field'] = RangeSliderField(minimum=30,maximum=300,name="TestName")
self.fields['range_field'] = RangeSliderField(minimum=10,step=10,maximum=102)
self.fields['label_range_field'] = RangeSliderField(label=True,minimum=1,maximum=100)
class fcPForm(forms.Form):
label_range_field = RangeSliderField(label="Date Range",minimum="",maximum="") # with label (no name)
这是模型.py:
^{pr2}$这是视图.py:
from .models import actuals,forecast,TestModel
def analyze(request):
if request.method == 'POST':
form = InputForm(request.POST,request.FILES)
dataType = request.POST.get("DataType")
request.session['dataType']=dataType
if form.is_valid():
sheet = request.FILES['FileLocation'].get_sheet()
book = request.FILES['FileLocation'].get_book()
#do calculation to find out eDate,lDate
fcForm = fcPForm(initial = {'label_range_field':(eDate,lDate)})
if fcForm.is_valid():
cdFC = fcForm.cleaned_data
return render(request,'abc.html',{'earliestDt':earliestDate,'latestDt':latestDate,'form':fcForm,context)
给你字段.py公司名称:
from django import forms
from .widgets import RangeSlider
class RangeSliderField(forms.CharField):
def __init__(self, *args, **kwargs):
self.name = kwargs.pop('name', '')
self.minimum = kwargs.pop('minimum',0)
self.maximum = kwargs.pop('maximum',100)
self.step = kwargs.pop('step',1)
kwargs['widget'] = RangeSlider(self.minimum, self.maximum, self.step, self.name)
if 'label' not in kwargs.keys():
kwargs['label'] = False
super(RangeSliderField, self).__init__(*args, **kwargs)
给你abc.html公司名称:
<form action="{% url 'DjangoApp:xyz'%}" method="post" enctype="multipart/form-data">{% csrf_token %}
<table>
{{ form }}
</table>
{% csrf_token %}
<input type="submit" value="Submit Data">
</form>
如果我向表单传递常规整数值,范围幻灯片就会出现,我可以与它交互。当日期值在文本框中显示时传递,但滑块消失。接受其他建议/不同的做事方式。在
目前没有回答
相关问题 更多 >
编程相关推荐