J'ai créé un photobloc personnalisé pour intégrer des photos dans un article de blog. J'essaye de créer un modèle de balise qui me permettrait d'obtenir chaque photoBlock stocké dans la base de données, presque comme si vous interrogiez des pages dans Wagtail. Je préférerais ne pas avoir à créer une page séparée pour chaque photo, mais plutôt être capable de les afficher sur une page différente si possible via la balise de modèle.Obtenir tous les blocs StreamField de type spécifique
class photoBlock(blocks.StructBlock):
date = blocks.DateBlock("Date Image Was Taken")
location = blocks.CharBlock(max_length=100)
image = ImageChooserBlock()
latitude = blocks.DecimalBlock(max_digits=9, decimal_places=6)
longitude = blocks.DecimalBlock(max_digits=9, decimal_places=6)
description = blocks.RichTextBlock()
Je suis en mesure d'obtenir ce qui suit pour travailler, mais il se sent comme la requête est très lourd et s'enliser une fois que j'ai un tas de messages.
for page in BlogPage.objects.all():
for block in page.body.stream_data:
if block['type'] == 'photoBlock':
return block
Existe-t-il une meilleure façon d'interroger un bloc spécifique de Streamfield? Chaque fois que j'essaie quelque chose comme ça
photoBlock.objects.all()
J'ai toujours une réponse d'erreur que photoBlock n'a pas d'attribut Object. Des idées?
hey merci pour la réponse rapide. Auriez-vous des suggestions sur la façon de mieux structurer mes modèles alors? Une idée que j'ai est de créer un modèle de page pour chaque photo, puis l'intégrer via un PageChooserBlock ou quelque chose. –