これを解決するには、ファイラーのFolderモデルを使用する必要がありました。これは私のモデルです:
class HeroExtension(TitleExtension):
image = FilerImageField(
blank=True,
null=True
)
def get_hero_image(self):
if self.image:
return self.image
folder = Folder.objects.filter(name='Heros')
if folder:
file = random.choice(folder.first().files)
if file:
return file
return None
最初にモデルの画像を返します(設定されている場合)。もしそうでなければ、特定のフォルダを探し、そこからランダムなイメージを選択します。
何も見つからなければ、None
を返します。それ以外の場合は、画像が返されます。
マイテンプレートは次のようになります。
{% if request.current_page.get_title_obj.heroextension.get_hero_image %}
{% with hero_image=request.current_page.get_title_obj.heroextension.get_hero_image %}
<img class="hero__image"
alt="{{ hero_image.default_alt_text }}"
srcset="{{ hero_image|thumbnail_url:'hero-450' }} 800w,
{{ hero_image|thumbnail_url:'hero-576' }} 1024w,
{{ hero_image|thumbnail_url:'hero-768' }} 1360w,
{{ hero_image|thumbnail_url:'hero-1080' }} 1920w"
sizes="100vw"
src="{{ hero_image|thumbnail_url:'hero-1080' }}">
{% endwith %}
{% endif %}
はDBで参照ランダム画像ですか? –
私は正直言ってわかりません、私はdjangoに比較的新しいです。私が言うことができるのは、私はファイラーにフォルダを作成し、それを使ってすべての画像をアップロードしたということです。ファイラーのイメージのメタデータを編集できるので、DBに何らかのリファレンスがなければならないと思います。 – thomas