问题描述
我正在开发一个 Django 3 应用程序,该应用程序允许用户添加和删除数据请求以供审核。用户将从列表中选择用户和站点,并根据数据的可用性填充日期/时间字段,以便能够选择开始和结束日期范围。我正在使用 Tempus Dominus 时间日期选择器在日期选择器中设置可用日期,并暂时对它们进行硬编码。最终目标是为它们查询 Elasticsearch,但硬编码目前还可以。
我的问题是;目前表单是静态的,这意味着没有任何选择会更改表单其他部分的内容。 当用户从下拉列表中选择不同的用户或站点时,如何使其动态化,以便 enableDates 日期列表发生变化?需要说明的是,用户和站点列表永远不会改变,只是需要更改 enableDates。
如果您有任何帮助或建议,我将不胜感激。
目前提交请求的表单以及显示任何现有请求如下:
这是我用于存储数据请求的模型:
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 (将#修改为@)