我最近一直在学习Django和HTML,但是我对JavaScript完全陌生。我正在创建一个带有过滤器菜单的数据库显示页面。对于此页面,我有以下代码:
Model.py:
class Part(models.Model):
PartID = models.AutoField(primary_key=True, unique=True)
SiteID = models.ForeignKey('Site', on_delete=models.CASCADE, null=True)
Comment = models.CharField(max_length=255, blank=True)
Subtype = models.ForeignKey('Subtype', on_delete=models.CASCADE, null=True)
Location = models.CharField(max_length=255, blank=True)
ConnectedTo= models.ManyToManyField('self', null=True)
BatchNo = models.CharField(max_length=32, blank=False, null=True)
SerialNo = models.CharField(max_length=32,blank=True)
Manufacturer = models.CharField(max_length=32, blank=False, null=True)
Length = models.FloatField(blank=True, null=True)
InspectionPeriod = models.IntegerField(blank=True, null=True)
LastInspected = models.DateField(blank=True, null=True)
InspectionDue = models.CharField(max_length=255, blank=True)
View.py:
@login_required(login_url='/accounts/login/')
def sites(request, site):
siteselected = site
warnings = 0
expired = 0
good = 0
PartsAtSite = Part.objects.filter(SiteID = siteselected)
TypesList = Type.objects.values_list('TypeName', flat=True).distinct()
InspectionList = Part.objects.values_list('InspectionPeriod', flat=True).distinct()
LengthList = Part.objects.values_list('Length', flat=True).distinct()
LocationList = Part.objects.values_list('Location', flat=True).distinct()
ManufacturerList = Part.objects.values_list('Manufacturer', flat=True).distinct()
for part in PartsAtSite:
if part.LastInspected == None:
part.InspectionDue = "Yes"
expired = expired + 1
else:
Deadline = part.LastInspected + timedelta(days=part.InspectionPeriod)
if datetime.now().date() > Deadline:
part.InspectionDue = "Yes"
expired = expired + 1
elif datetime.now().date() > (Deadline - timedelta(days=30)):
part.InspectionDue = "<30 Days"
warnings = warnings + 1
else:
part.InspectionDue = "No"
good = good + 1
part.save()
context = {
'TypesList': TypesList,
'InspectionList': InspectionList,
'LengthList': LengthList,
'LocationList': LocationList,
'ManufacturerList': ManufacturerList,
'PartsAtSite': PartsAtSite,
'expired': expired,
'warnings': warnings,
'good': good,
'SiteName': Site.objects.get(SiteID = siteselected).SiteName,
'SiteNo': Site.objects.get(SiteID = siteselected).SiteID,
}
template = loader.get_template('moorings/sites.html')
return HttpResponse(template.render(context, request))
以及我的过滤器div的HTML:
<div id="filterdiv" class="dark">
<center><h3>Filters</h3></center>
<br>
<center>Type</center>
<select name="Types">
<option>All</option>
{% for types in TypesList %}
<option>{{types}}</option>
{%endfor%}
</select>
<br>
<br>
<center>Inspection Period</center>
<select name="Inspection Period">
<option>All</option>
{% for inspections in InspectionList %}
<option>{{inspections}}</option>
{%endfor%}
</select>
<br>
<br>
<center>Length</center>
<select name="Length">
<option>All</option>
{% for lengths in LengthList %}
<option>{{lengths}}</option>
{%endfor%}
</select>
<br>
<br>
<center>Location</center>
<select name="Location">
<option>All</option>
{% for locations in LocationList %}
<option>{{locations}}</option>
{%endfor%}
</select>
<br>
<br>
<center>Manufacturer</center>
<select name="Manufacturer">
<option>All</option>
{% for manufacturers in ManufacturerList %}
<option>{{manufacturers}}</option>
{%endfor%}
</select>
<br>
<br>
<button>Apply Filter (TODO)</button>
<button>Reset Filters (TODO)</button>
</div>
我能够很好地填写列表,但是我希望能够对其进行更改,以便在选择Type
后打开Manufacturer
下拉框时,我只会得到[ Type
中的C0] s。
谢谢。
我知道这很好用:
Manufacturer
但是在选择了选项之后,您希望制造商列表仅显示所选类型选项吗?
如果没有,请让我知道您想要的代码工作流程!