巨大な 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();
}
}