0

これについて少し関連する質問がいくつかありましたが、その回答はあまり役に立ちませんでした。他の場所で提案された潜在的な良いヒント (カスタム テンプレート) を実装しようとしたとき、望ましい結果が得られませんでした。

私のテンプレートでは、辞書の一連のキーを繰り返し処理しています。ディクショナリ自体は、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>
}
4

2 に答える 2

0

誰かが同じ問題を抱えている場合に備えて、私は実際にやり方を変えました。

テンプレートでフォームセットを反復しません。代わりに、ここで Paolo Bergantino のソリューションを実装しました: Ajax を使用してフォームを Django フォームセットに動的に追加します。

次に、私の見解では、必要なすべてのデータを取得するだけですrequest.FILES

同じ間違ったアプローチで始めた人の助けになることを願っています。

于 2013-09-12T16:17:44.733 に答える