Je crée un StructBlock pour StreamField. L'objectif est de créer un bloc qui va télécharger une image ainsi que beaucoup de métadonnées. Les métadonnées sont un mélange de CharBlocks, ImageChooserBlocks et RichTextBlocks.Wagtail ;: ValueError: trop de valeurs à décompresser (2 attendues) lors de la création d'un grand StructBlock personnalisé pour StreamField
Quand je veux faire les changements dans la base de données à l'aide makemigrations
je reçois l'erreur « ValueError: trop de valeurs à déballer (attendu 2) »
précédente que je reçois:
File "C:...\models.py", line 66, in CatalogueIndexPage
'image', TurnerImageBlock(),
File "C:...\wagtail\lib\site-packages\wagtail\wagtailcore\fields.py", line 51, in __init__
self.stream_block = StreamBlock(block_types, required=not self.blank)
File "C:...\wagtail\lib\site-packages\wagtail\wagtailcore\blocks\stream_block.py", line 47, in __init__
for name, block in local_blocks:
je pensant que cela peut être dû à trop de domaines. Mais cela ne devrait pas être un problème. J'ai aussi regardé le formatage mais je ne peux pas le voir. J'ai inclus le code models.py
ci-dessous.
from datetime import date
from wagtail.wagtailcore.models import Page
from wagtail.wagtailcore.fields import StreamField
from wagtail.wagtailcore import blocks
from wagtail.wagtailadmin.edit_handlers import StreamFieldPanel
from wagtail.wagtailimages.blocks import ImageChooserBlock
class TurnerImageBlock(blocks.StructBlock):
image_title = blocks.CharBlock(required=True)
thumbnail = ImageChooserBlock()
full_image = ImageChooserBlock()
copyright_conditions_of_use = blocks.CharBlock()
unique_identifying_number = blocks.CharBlock()
date_of_submission = blocks.DateTimeBlock(default=date.today)
# person submitting
person_submitting_images = blocks.CharBlock()
current_owning_inst_person = blocks.CharBlock()
inst_personal_unique_impression_accession_no = blocks.CharBlock()
inst_personal_unique_image_accession_no = blocks.CharBlock()
# Dimensions
impression_physical_dimensions = blocks.CharBlock()
size_of_paper = blocks.CharBlock()
size_of_plate_impression = blocks.CharBlock()
size_of_picture = blocks.CharBlock()
# Physical Attributes
paper_type = blocks.CharBlock()
comments_on_impression = blocks.RichTextBlock()
condition = blocks.CharBlock()
physical_history = blocks.CharBlock()
# Digital Image
digital_image_dimensions = blocks.CharBlock()
digital_image_capture_mechanism = blocks.CharBlock()
imaging_device = blocks.CharBlock()
device_settings = blocks.CharBlock()
calibration = blocks.CharBlock()
date_of_capture = blocks.CharBlock()
# Engraving info
rawlinson_finerg_number = blocks.CharBlock()
proposed_version_state = blocks.CharBlock()
engraver = blocks.CharBlock()
original_engraving_date = blocks.CharBlock()
original_publication = blocks.CharBlock()
actual_publication = blocks.CharBlock()
# text and info on impression
printed_text_on_impression = blocks.RichTextBlock()
written_info_on_impression = blocks.RichTextBlock()
turner_touching_comments = blocks.RichTextBlock()
previous_collection_owner = blocks.RichTextBlock()
links_related_info = blocks.CharBlock()
histories_or_original_drawing = blocks.CharBlock()
class CatalogueIndexPage(Page):
body = StreamField([
'image', TurnerImageBlock(),
])
content_panels = Page.content_panels + [
StreamFieldPanel('body'),
]
J'ai rencontré des problèmes similaires en disant que c'est une erreur de dictionnaire/tuple etc. Mais je n'ai pas assez d'expérience pour voir où se situe le problème dans mon code.
Merci! Cela l'a résolu. –