Трясогузка: можно ли передать родительскую страницу в structblock при создании новой страницы? - PullRequest
1 голос
/ 18 июня 2020

Я создаю веб-сайт, который должен быть доступен на нескольких языках. Для большинства страниц это не проблема, поскольку мы просто дублируем дерево страниц. Однако есть некоторые компоненты (например, ModelAdmin, но есть и некоторые страницы, которые используются аналогичным образом), которые нельзя перевести таким образом.

У меня есть несколько структурных блоков, которые ссылаются на такую ​​модель, вот one:

class StoriesSection(blocks.StructBlock):
    sub_title = blocks.CharBlock(required=True, help_text='Sub-title displayed at the very top')

    stories = blocks.ListBlock(
        blocks.StructBlock(
            [
                ('image', APIImageChooserBlock(required=True)),
                ('cta_copy', blocks.CharBlock(required=True, default='Read the article')),
                ('story', blocks.ChoiceBlock(required=True, choices=get_stories, help_text='Linked story')),
            ]
        )
    )

Теперь я могу передавать все истории с помощью метода get_stories, как сейчас:

def get_stories():
    # use get model to prevent circular import (pages.models <-> streams.blocks)
    model = apps.get_model('pages', 'StoryPage')
    return [(story.id, story.title) for story in model.objects.all()]

Проблема в том, что история имеет специфику c язык. При создании новой страницы я хотел бы отображать только те истории, которые соответствуют языку родительской страницы в поле «история». В данном случае это:

/en/  
    /stories/   
        /story-1/ <- would like to only pass story pages that are in here  
    /some-other-page/ <- creating this page  
/fr/  
    /stories/  
        /a-french-story/  
    ...  

Есть ли способ добавить правильный язык в метод get_stories? Я использую безголовую установку

...