具体是这样的:
models.py
class Filter(models.Model):
name = models.CharField(max_length=20,unique=True)
def __str__(self):
return self.name
class Plan(models.Model):
plan_name =models.CharField(max_length=20,primary_key=True)
filter = models.ForeignKey('Filter')
def __str__(self):
return self.plan_name
forms.py:
class PlanForm(forms.ModelForm):
class Meta:
model = Plan
fields = ('plan_name','filter')
widgets={
'filter':forms.Select(attrs={'id':'filter','onchange':'filter_params()'})
}
模板:
{% csrf_token %}
{% for field in form %}
<div>
<label>{{field.label}}</label>
{{field}}
</div>
{% endfor %}
<div id="FIR" style="display:none">
<label>{{FIR_params.label}}</label>
{{FIR_params}}
</div>
<div id="NotFIR" style="display:none">
<label>{{NotFIR_params.label}}</label>
{{NotFIR_params}}
</div>
<script>
function filter_params(){
choice = document.getElementById("filter").value;
FIR_params = document.getElementById("FIR");
NotFIR_params = document.getElementById("NotFIR");
switch(choice){
case "FIR":
FIR_params.setAttribute("style","display");
NotFIR_params.setAttribute("style","display: none");
case "NotFIR":
FIR_params.setAttribute("style","display: none");
NotFIR_params.setAttribute("style","display");
}
}
</script>
其中FIR和NotFIR分别是两个模板表单,两表字段都是字符输入。模板中循环的form是PlanForm的各字段。
想法是选择不同filter,根据filter不同值出现不同字符输入选项。
可是在页面中字符输入框一个都不显示,更不用说不同选择出现不同输入框的情况了。
求解?
到具体的html页面上看看source,看看是不是渲染错误了,有没有js报错什么的,或者直接调js
django可以渲染javascript的东西的