4

巨大な django フォームがあり、キーがテンプレートのフィールド ID で、値が初期値である dict を作成する必要がありますか? このようなもの:

{'field1_id_in_template': value1, ...}

誰かがそれを行う方法を知っていますか?

form.fields ディクショナリの各フィールド名にプレフィックス「id_」を追加できますが、誰かが widget.attrs の id を変更すると問題が発生する可能性があります

答え:

これが CBV の方法です。

def post_ajax(self, request, *args, **kwargs):
    form = ChooseForm(request.POST, log=log)
    if form.is_valid():
        instance = form.save()
        inst_form = InstanceForm(instance=instance, account=request.user)
        fields = {}
        for name in inst_form.fields:
            if name in inst_form.initial:
                fields[inst_form.auto_id % name] = inst_form.initial[name]
        return HttpResponse(
            json.dumps({'status': 'OK','fields':fields},
            mimetype='appplication/json'
        )
    assert False

そして、これが私がそうする理由です。この応答により、クライアントでこのようなものを書くことができます。ページ上のすべてのフィールドを手動で初期化する必要がなくなりました

function mergeFields(data) { 
    for(var id in data) { 
        $("#"+id).val(data[id]).change(); 
    } 
} 
4

2 に答える 2