I'm creating a StructBlock for StreamField. The goal is to create a block that will upload an image as well as a lot of metadata. The metadata is a mixture of CharBlocks, ImageChooserBlocks and RichTextBlocks.
When I want to make the changes in database using makemigrations
I receive the error "ValueError: too many values to unpack (expected 2)"
Preceeding that I get:
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:
I was thinking that it may be due to too many fields. But that shouldn't be a problem. I have also looked at formatting but can't see any. I've included the models.py
code below.
from datetime import datefrom wagtail.wagtailcore.models import Pagefrom wagtail.wagtailcore.fields import StreamFieldfrom wagtail.wagtailcore import blocksfrom wagtail.wagtailadmin.edit_handlers import StreamFieldPanelfrom wagtail.wagtailimages.blocks import ImageChooserBlockclass 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'), ]
I have seen similar problems saying it's a dictionary/tuple etc error. But I'm not experienced enough to see where the problem is in my code.