我正在通過Django 1.4.5框架在Web應用程序上工作。我想根據在另一個下拉列表(選擇id =「ida」)中選擇的選項動態地填充下拉列表中的選項(選擇id =「packages」)。我已經尋找答案,但沒有任何指向正確的方向。這裏是我的代碼:從另一個下拉列表中選擇一個選項時動態加載下拉列表
我的模板(HTML):
function getPackages(elementId)
{
//This is what I want to write, but could not figure out.
}
Select IDA's:
<select id="ida" name="ida" onchange="getPackages('ida');">
{% for ida in ida_list %}
<option value="ida{{ ida.id }}">{{ ida.ida_display_name }}</option>
{% endfor %}
</select>
Select packages to install: <select id="package" name="package"multiple="multiple" size="5">
{% for package in package_list %}
<option value="package {{ package.pkg_id }}">{{ package.display_name }}</option>
{% endfor %}
</select>
我的觀點:
def automation(request):
ida_list = IDA.objects.all()
ida = IDA.objects.get(ida_name='VSA') #this is what I want to do from javascript
package_list = ida.package_set.all()
context = {'ida_list' : ida_list, 'package_list' : package_list}
return render_to_response('vsawebauto/automation.html', context, context_instance=RequestContext(request))
我的模型:
class IDA(models.Model):
ida_name = models.CharField(max_length=100)
ida_display_name = models.CharField(max_length=100)
def __unicode__(self):
return self.ida_name
class Package(models.Model):
pkg_ID = models.IntegerField(primary_key=True)
pkg_name = models.CharField(max_length=50)
display_name = models.CharField(max_length=100)
username = models.CharField(max_length=50,default="NULL")
password = models.CharField(max_length=50,default="NULL")
IDAs = models.ManyToManyField(IDA)
def __unicode__(self):
return self.display_name
簡要說明:根據html頁面上的IDA選擇,我希望包能夠動態顯示在下拉列表中。包可以屬於多個IDA,反之亦然(模型類中的許多關係)。所以,我希望只要用戶選擇IDA,javascript就應該獲得與該IDA相對應的對象(類似於:ida = IDA.objects.get(ida_name ='VSA')),並且應該爲該包提取包IDA並顯示。
你遇到了什麼問題? getPackages – Nix
的代碼在哪裏我找不到一種方法來做到這一點。對不起,我應該在之前提到過。我可以使用'ida.package_set.all()'獲取特定IDA的軟件包(例如VSA,如上圖所示),並在模板上顯示package_list。但我想在javascript中執行相同的操作(以顯示與列表中所選IDA對應的包)@Nix – gauravhalbe