0

私は Django 1.4.5 フレームワークで Web アプリケーションに取り組んでいます。別のドロップダウンリスト(select id="ida")で選択されたオプションに応じて、ドロップダウンリスト(select 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 と表示されます。

4

1 に答える 1