Изображение потока трясогузки, игнорирующее файл HTML - PullRequest
1 голос
/ 28 марта 2020

Я настроил потоковый файл, и все блоки работают, кроме изображения. Я знаю, что, должно быть, упустил из виду нечто очевидное. Изображение отображается. Он просто игнорирует html. В моем models.py у меня есть:

    content = StreamField(
    [
        ("title_and_text", blocks.TitleTextBlock()),
        ("full_rich_text", blocks.RichTextBlock()),
        ("simple_rich_text", blocks.LimitedRichTextBlock()),
        ("image_float_left", blocks.ImageChooserBlock()),
    ],
    null=True,
    blank=True,
 )

На моей странице html у меня есть:

{% for block in page.content %}
    {% include_block block %}
{% endfor %}

Все остальные блоки отображаются правильно. В моем файле blocks.py у меня есть:

class ImageFloatLeftBlock(ImageChooserBlock):
"""Float an image to the left"""

class Meta:
    template = "streams/image_float_left_block.html"
    icon = "doc-full"
    label = "Float Image Left"

Файл html игнорируется. Я положил и H1 в нем, просто чтобы быть уверенным. Изображение отображается. Я предполагаю, что он не смотрит на файл streams / image_float_left_block. html. Это работает для других полей, которые установлены таким же образом. Например, это работает:

class TitleTextBlock(blocks.StructBlock):
"""Title and text and nothing else."""

title = blocks.CharBlock(required=True, help_text="The heading for the block")
text = blocks.TextBlock(required=True, help_text="The body of the block")

class Meta:
    template = "streams/title_text_block.html"
    icon = "edit"
    label = "Title & Text"

Я подозреваю, что это родительский класс в вызове:

class ImageFloatLeftBlock(ImageChooserBlock):

Я не могу найти ничего более подходящего в импорте блоков. Каким будет соответствующий родительский класс или есть какая-то другая проблема?

1 Ответ

2 голосов
/ 28 марта 2020

В определении StreamField вы не указали ему использовать ваш собственный подкласс ImageFloatLeftBlock, поэтому он все еще использует базовый c ImageChooserBlock, в котором нет настроек вашего шаблона. Должно быть:

content = StreamField(
    [
        ("title_and_text", blocks.TitleTextBlock()),
        ("full_rich_text", blocks.RichTextBlock()),
        ("simple_rich_text", blocks.LimitedRichTextBlock()),
        ("image_float_left", blocks.ImageFloatLeftBlock()),
    ],
    null=True,
    blank=True,
 )
...