5

これが私がやりたいことです。これまでの検索で同様のものが見つかりませんでした。私の管理ページでは、モデルにファイルフィールドがあります。残りのフィールドはすべて読み取り専用です。ファイルをアップロードしてすぐに処理し、そこから情報を抽出してこれらの読み取り専用フィールドに割り当てられるようにしたいと考えています。

この FileField の clean_(modelfield) メソッドをオーバーライドし、この解析と代入を行うことを考えました。しかし、これはファイルがアップロードされた直後に行われるわけではありませんよね? これは、フォーム/エントリが保存されたときに行われると思いました。次に、ファイルがアップロードされた後にクリックできる「プロセス」という名前のカスタム ボタンをこの管理フォームに追加することを考えました。これにより、読み取り専用フィールドへの値の割り当てがトリガーされます。しかし、ファイルを処理し、更新されたフィールドを 1 ページに表示するための最善の方法を決定することはできません。

何かご意見は?ありがとう

4

1 に答える 1

1

私の限られた知識で考えられる解決策は2つあります。デフォルトでは、ファイルのアップロードはリクエストが送信された後にのみ開始されるため、別の方法を設計する必要があります。

1. スクリプトを介してファイルをアップロードし、ファイルを処理する:スクリプト (例: JQuery スクリプト) を使用してファイルをアップロードし、アップロードが完了したら、スクリプト (onComplete イベント) をトリガーして、値を読み取り専用フィールドにレンダリングします。FileField が変更されると、このプロセス全体を [プロセス] ボタンまたは時間遅延トリガーに関連付けることができます。

2 ファイル アップロード用のカスタム フォーム:ファイル フィールドと他のフィールドを切り離すことができます (言及したフィールドのみを読み取ります)。ファイル アップロード フィールドのみを含むカスタム フォームを設計し、ユーザーがリクエストを送信すると、読み取り専用フィールドにレンダリングされた初期値を使用して別のフォームをレンダリングできます。そうすれば、スクリプトは必要ありませんが、2 つのフォームが必要になります。

お役に立てれば。他の解決策を見つけた場合は、共有してください:)

于 2011-04-30T08:52:36.470 に答える