Django 表单中的动态日期时间字段

问题描述

我正在开发一个 Django 3 应用程序,该应用程序允许用户添加删除数据请求以供审核。用户将从列表中选择用户站点,并根据数据的可用性填充日期/时间字段,以便能够选择开始和结束日期范围。我正在使用 Tempus Dominus 时间日期选择器在日期选择器中设置可用日期,并暂时对它们进行硬编码。最终目标是为它们查询 Elasticsearch,但硬编码目前还可以。

我的问题是;目前表单是静态的,这意味着没有任何选择会更改表单其他部分的内容。 当用户从下拉列表中选择不同的用户站点时,如何使其动态化,以便 enableDates 日期列表发生变化?需要说明的是,用户站点列表永远不会改变,只是需要更改 enableDates。

如果您有任何帮助或建议,我将不胜感激。

目前提交请求的表单以及显示任何现有请求如下:

enter image description here

这是我用于存储数据请求的模型:

class DataRequest(models.Model):

USERS = [
    ('User1','User1'),('User2','User2'),('User3','User3'),]
users = models.CharField(
    choices=USERS,max_length=32,default='User1',)

SITE = [
    ('Site1','Site1'),('Site2','Site2'),('Site3','Site3'),]
site =models.CharField(
    choices=SITE,default='Site1',)
start = models.DateTimeField() 
end = models.DateTimeField() 
user = models.ForeignKey(CustomUser,on_delete=models.CASCADE)

def get_request(self):
    request = {
        "id": self.id,"users": self.users,"site": self.site,"start": self.start,"end": self.end,}
    return request

这是表格:

class RequestForm(ModelForm):
 start = forms.DateTimeField(
    widget=DateTimePicker(
        options={

        },attrs={
            'append': 'fa fa-calendar','input_toggle': True,'icon_toggle': True,}
    )
 )
 end = forms.DateTimeField(
    widget=DateTimePicker(
        options={
            'useCurrent': False,'enabledDates':["2021-02-20",],// hard coded dates go here
        },}
    )
 )

 class Meta:
    model = DataRequest
    fields = ['users','site','start','end']

 def __init__(self,*args,**kwargs):
    super(RequestForm,self).__init__(*args,**kwargs)
    self.fields['users'].widget.attrs.update({'class' : 'form-control'})
    self.fields['site'].widget.attrs.update({'class' : 'form-control'})

这是用于添加删除请求的视图,现有数据请求列表在页面上下文中发送:

 def delRequest(request,pk):
    if request.method == 'POST':
        request = DataRequest.objects.get(id=pk)
        request.delete()
    return redirect('dashboard')

 def addRequest (request):
    if request.method == 'POST':  
        form = RequestForm(request.POST)
        if form.is_valid():
            DataRequest.objects.create(
                user=request.user,users=form.cleaned_data['users'],site=form.cleaned_data['site'],start=form.cleaned_data['start'],end=form.cleaned_data['end']
            )
            print("Added new Request")
            return redirect('dashboard')

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)