I want to display related drop down values using jquery in django. My first drop down list has languages such as python,ruby and php. The second dropdown has frameworks related to languages. For python the frameworks are django, pylons, grok. For ruby the frameworks are rails, cuba. For php the frameworks are cakephp,codeignator... I have written 3 tables names languages, framework and website.
models.py
class languages(models.Model):
lname=models.CharField(max_length=10)
def __unicode__(self):
return self.lname
class framework(models.Model):
fname=models.CharField(max_length=25)
lang=models.ForeignKey(languages)
def __unicode__(self):
return self.fname
class website(models.Model):
wname=models.CharField(max_length=30)
framewrk=models.ForeignKey(framework)
def __unicode__(self):
return self.wname
Views.py
def lang_fun(request):
if request.method=='POST':
l=request.POST.get('l1')
languages(lname=l).save()
return HttpResponseRedirect('/frame_fun')
else:
return render(request,"languages.html")
def frame_fun(request):
if request.method=='POST':
la=request.POST.get('drop1')
f=request.POST.get('f1')
framework(lang_id=la,fname=f).save()
return HttpResponseRedirect('/web_fun')
else:
stl=languages.objects.all()
return render(request,"framework.html",{'stl':stl})
def web_fun(request):
if request.method=='POST':
fr=request.POST.get('drop2')
w=request.POST.get('w1')
website(framewrk_id=fr,wname=w).save()
return HttpResponseRedirect('/display')
else:
stl=framework.objects.all()
return render(request,"website.html",{'stl':stl})
def display(request):
s1=languages.objects.all()
s=website.objects.all()
return render(request,"display.html",{'s':s,'s1':s1})
display.html
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#drop1').on('change', function() {
$('#text1').val($('#drop1').val());
});
});
</script>
</head>
<body>
<table id="tab1" border="1px">
<tr><th>language</th><th>framework</th><th>website</th></tr>
{% for i in s %}
<tr><td> {{i.framewrk.lang.lname}}</td>
<td>{{i.framewrk.fname}}</td>
<td>{{i.wname}}</td>
</tr>
{% endfor %}
</table>
<select id="drop1">
{% for i in s %}
<option value={{i.framewrk.fname}}>{{i.framewrk.lang.lname}}</option>
{% endfor %}
<input type="text" id="text1">
</body>
</html>
In my views.py I have added frameworks and websites for languages. In my display.html, I have displayed the corresponding frameworks and websites for languages. Am accessing the languages in dropdown, the languages are repeated depends on the number of frameworks it contains. I want it without repetition. And I can display the frameworks for languages one by one in text box. I want it to be in dropdon. When I select python I want the frameworks of python to be displayed in another drop down. Can you help me how to write the html and jquery. Thanks in advance. Am learning python. So please guide me.