どのようにすれば以下の状態を実現すればよいのか分かりません。アドバイスお願いいたします。
条件
1. 二万件以上のインスタンスを作成する。
2. 各インスタンスには複数の画像を登録する。画像の数はインスタンスに依っています。
--例えば1つのものもあれば、4つのものもある。
3. インスタンスのアトリビュートにtitle(models.CharField)があります。画像は各インスタンスのtitleに_1.jpg, _2.jpgという名前で画像保存します。
--例えば、インスタンスAのタイトルは1st_book, 画像は3つあり、それぞれ1st_book_1.jpg, 1st_book_2.jpg, 1st_book_3.jpgという画像名があります。
4. インスタンスの画像については、差し替えや追加を前提としている。
5. 画像を含むインスタンスの作成を手動ではなく自動(プログラム)で作成する。
--補足1-- : MEDIAを使う場合(クラスインスタンスに結びつける場合)どのように画像を登録すればいいのか分かっていません。djangoのadminページから手動で画像を選択し、インスタンスの作成経験はございます。
--補足2-- : インスタンスの要素が入っているcsvファイルをdjangoにアップロードして、インスタンスを自動作成経験があります。ただし画像も自動で作成はやり方の想像がついていないです。
案
自分が考えた案1.
画像をmediaではなくstaticで表示する案。アトリビュートとしてimage_title1(models.CharField)のようなものを設け、以下のように実現する。
html
1{% load static %} 2 3<img src="{% static 'images/{{ image_title1 }}' %}" />
この方法はテンプレートタグ( {% %} )に更にインスタンスを表すもの( {{ }} )を組み合わせて使うことが出来ない事が判明した。またデプロイ時に静的ファイルはwebサーバーから配信する予定なので、こんな方法をとると、アプリケーション・サーバーを介していないimgタグのsrcはまず読み込み不能になるだろうと判断。 しかしながらこの方法は以下のメリットがあると思いました。
mediaを手動でアップロードすることなく実現できる点。追加でimage_titleをインスタンスに登録しても、mediaのように既存の画像を登録し直す必要がない点。
自分が考えた案2.
mediaとして登録する。まずインスタンスを作成し、次の段階で画像を自動的にインスタンスに追加登録する仕組みを構築する。
html
1<img src="{{ object.image1.url }}" /> 2<img src="{{ object.image2.url }}" /> 3
この方法は手動でしかインスタンスに画像を追加する方法を知らないので本当にプログラムから登録することが可能なのか自信がない。まずローカルの画像ファイルを自動でアップロードすることが可能なのか。。。?
知恵をお貸しください。どうぞよろしくお願いいたします。
あなたの回答
tips
プレビュー