4

こんにちは私はこのタイプのモデルを持っています

class Post(models.Model):
    title = models.CharField()
    image = models.ImageField()
    # other fields

新しい投稿を作成するには、次のようなフローを作成します。

  • 新しい投稿ページ1で、ユーザーは写真を選択してアップロード(送信)します
  • 新しい投稿ページ2では、ユーザーは写真を表示し、「タイトル」などの他のフィールドに入力できます。

私の質問は、画像フィールドを使用して新しいPostオブジェクトを作成せずに、写真をアップロードして次のページに表示する方法です。画像を一時ディレクトリに保存する必要がありますか?この場合、参照を保持して2ページ目で使用するにはどうすればよいですか?

ありがとう。

4

3 に答える 3

1

いくつかの解決策があります

  1. 画像を保持するために別のモデルを定義し、PostモデルにOneToOneFieldを追加する場合があります。page1を送信するときに、この画像モデルのインスタンスを作成し、画像フィールドとしてpage2に配置します。
  2. html5ファイルAPIを使用すると、画像フィールドでローカルファイルを参照できます。したがって、サーバーに保存せずにローカルクライアント側のパスを使用してページ2に画像を表示できます。参照:アップロードする前に、クライアント側でファイルシステムから選択した画像を表示しますか?
于 2012-06-26T11:29:50.087 に答える
0

最初に関連するドキュメントを読んで、アップロードされたファイルで何が起こるかを理解してください: https://docs.djangoproject.com/en/dev/topics/http/file-uploads/

私見の最も簡単な解決策は、

1/ アップロードされたファイルを一時ディレクトリに保存します - 何らかの方法でコンテンツを提供できることを確認してください (フロント Web サーバーを介して直接、またはこのコンテンツにアクセスできるユーザーをより細かく制御したい場合はカスタム ビューを介して)。

2/一時ファイルのパスとURLを何らかの方法で「次の」ビューに渡します(非表示のフォームフィールド、セッション...)。

于 2012-06-26T11:45:40.243 に答える
0

私は画像を保存するためのテーブルを持っていました(実際にはすべてのファイル:))。各画像はオブジェクト (FK) にリンクされており、下書き、承認済み、削除済みのステータスがあります。したがって、一時ディレクトリは使用せず、画像のテーブルでステータスを変更するだけです。

于 2012-06-26T12:19:26.887 に答える