これについて少し関連する質問がいくつかありましたが、その回答はあまり役に立ちませんでした。他の場所で提案された潜在的な良いヒント (カスタム テンプレート) を実装しようとしたとき、望ましい結果が得られませんでした。
私のテンプレートでは、辞書の一連のキーを繰り返し処理しています。ディクショナリ自体は、Django フォームセットの送信に由来します。
XML テンプレート スニペット: (XML ファイルにレンダリングしています)
{% for x in range %}
<file type="{{ form-'x'-type }}" viewpath="{{ form-'x'-file }}"/>
{% endfor %}
上記は明らかに機能しません。繰り返しが機能します。range
変数は、ビューから XML テンプレートに渡されるものに対応する Python 引数ですrange(int(request.POST['form-TOTAL_FORM']))
。
テンプレートの反復ごとに、、、{{ form-0-type }}
など{{ form-1-type}}
が{{ form-2-type }}
必要です。
それ、どうやったら出来るの?これにカスタム フィルターを本当に使用する必要がある場合は、どうすればよいですか?
この質問 (および回答) が、同じ問題を抱えている多くの人に役立つことを願っています。
ありがとう。
編集:(辞書投稿)
<QueryDict:
{
u'form-MAX_NUM_FORMS': [u'1000'],
u'form-INITIAL_FORMS': [u'0'],
u'form-TOTAL_FORMS': [u'2'],
u'form-0-type': [u'1'],
u'form-1-type': [u'2'],
u'csrfmiddlewaretoken': [u'LpkjdDcqRCL4VPM0SAuU7efgZjgeubTN']
}>
追記: 2 番目のビューでは、外部キーの値を検索し、その値を別の辞書に入れ、それを XML テンプレートに送信します。
これを行うコードのスニペット:
detailed_request = {}
for x in range(0, int(request.POST['form-TOTAL_FORMS'])):
detailed_request['form-'+str(x)+'-type'] = Upload_Type.objects.get(pk=request.POST['form-'+ str(x)+'-type'])
detailed_request['form-'+str(x)+'-file'] = request.FILES['form-'+str(x)+'-file']
上記は作業用のスニペットです。をトレースするとdetailed_request
、必要なすべての情報が得られます。
{
'form-1-type': <Upload_Type: malib>,
'form-0-type': <Upload_Type: axf_file>
}