Создание блока тегов для StreamField

Я пытаюсь создать пораженный блок, в котором есть поле тегов, чтобы пользователь мог выбирать теги, из которых он хочет фильтровать. Я создал поле тегов, используя wagtail.admin.widgets import AdminTagWidget.

class TagsBlock(FieldBlock):
    field = forms.CharField(
        widget=AdminTagWidget
        )

class RelatedArticlesBlock(StructBlock):
    title = CharBlock(required=False)
    filter_tags = TagsBlock()
    no_of_items = IntegerBlock()

Он работает, как и ожидалось, для выбора тегов. Но когда я сохраняю, это дает ошибки проверки, потому что поле filter_tags пусто.

Что мне делать, чтобы исправить это? (Ввод не заполняется выбранными тегами)

Для выбора тегов работает как положено

Ошибки проверки, поскольку поле filter_tags пусто


person EastSw    schedule 07.04.2020    source источник


Ответы (2)



LB Ben Johnston помог мне разместить теги в блоках, но в конце концов я столкнулся с той же ошибкой, что и вы, поскольку я не мог оставить поле тега пустым. Чтобы исправить это, я изменил приведенное выше (ответ LB Ben Jonston), так что теперь TagsBlock:

class TagsBlock(blocks.FieldBlock):
    """
    Basic Stream Block that will use the Wagtail tags system.
    Stores the tags as simple strings only.
    """

    def __init__(self, required=False, help_text=None, **kwargs):
        self.field = forms.CharField(widget=AdminTagWidget, required=False)
        super().__init__(**kwargs)

required=False теперь внутри поля self.field.

Это позволило мне оставить поле тега пустым, если пользователь захочет.

Надеюсь, это поможет!

person Josh Woodcock    schedule 17.04.2020