3

従業員、会社、部門の 3 つのクラスを持つ 1 つのアプリを作成しています。

従業員を編集するときは、彼の会社を知る必要があり、その後、選択した会社のすべての部門を含むフィールドが必要です。しかし、ModelChoiceField を使用すると、すべての会社のすべての部門が表示されます。

それは特権の問題ではありません。部門フィールドを検証するには、選択した会社の部門である必要があります。ただし、これを検証したくはありません。上のフィールドで選択した特定の会社の部門のみを表示する必要があります。

これはクライアント側の操作であるため、javascript が必要になると思うので、django で何らかの方法で自動化されているかどうか、またはこの目的のために django-plugin または jquery-plugin をダウンロードする必要があるかどうかを知りたいです。

助けていただければ幸いです、ありがとう!

4

1 に答える 1

4

これはdjangoに組み込まれているものではなく、少しハッキングする必要がありますが、私は以前にこの種のことを行ったことがあります。

jQueryAJAXリクエストを会社選択フィールドのonChangeイベントに添付する必要があります。誰かが会社を選択すると、データベースにクエリを実行し、その会社に固有の部門のリストを要求します。

編集:

次のjavascriptとdjangoのようなものが機能します:

$('#id_company').change(function(){
  $.POST('{% url some_url_name %}',
    {
      'company_id': $('#id_company').val()
    },
    function(data){
      if(data.valid){
        var d = '<select id="id_department" name="department">';
        $.each(data.records, function(k,v){
          d += '<option value="' + v.id + '">' + v.name +'</option>';
        });
        d += '</select>';
        $('#id_department').html(d);
      }
    }, 'json'
  );
});


def ajax_request(request, company_id):
  if request.is_ajax() and request.method == 'POST':
    data = simplejson.dumps(Department.objects.filter(company__id=company_id)
    return HttpResponse(data, mimetype='application/javascript')
于 2011-03-18T14:31:06.610 に答える