Wagtail - Как я могу использовать пользовательский структуру с программно назначимыми значениями по умолчанию?Javascript

Форум по Javascript
Ответить
Anonymous
 Wagtail - Как я могу использовать пользовательский структуру с программно назначимыми значениями по умолчанию?

Сообщение Anonymous »

Я создал потоковое поле для некоторых настроек сайта. Это Streamfield содержит коллекцию пользовательской структуры, называемой Facetblock. Facetblock содержит логическийблок, Charblock, Integerblock и выбор. Теперь мне нужно сделать перевод Charblock, что означает, что администратор сможет ввести один текст для каждого языка, доступного на сайте. Он будет содержать блокнот, Charblock и некоторый скрытый вход, чтобы сохранить полное значение. Используя JavaScript, администратор выбет язык, введите текст для этого языка, а затем перейдет на следующий язык. Я еще не уверен, как это будет сохранено база данных, но я даже не могу зайти так далеко.

Код: Выделить всё

TypeError: e is null
) в vendor.js , который запускает ту же ошибку в комментариях.js . Вот код, который у меня есть до сих пор. Я пропустил определение FacetBlock, потому что оно работает отлично при возврате TranslatableTextBlock к Charblock.class TranslatableTextBlock(StructBlock):
def __init__(self, default_text:str = None, default_language:str = None, local_blocks = None, search_index = True, **kwargs):
local_blocks = [
(
"language",
ChoiceBlock(
choices=LANGUAGES,
default=default_language if default_language else None,
help_text=_("Select the language for this text")
)
),
(
"text",
CharBlock(
default=default_text if default_text else None,
help_text=_("Enter your text in the selected language"),
)
)
]
super().__init__(local_blocks, search_index, **kwargs)

class Meta:
form_classname = "struct-block translatable-text-block"
form_template = 'blocks/translatable_text_block_admin.html'
icon = 'doc-full'
label = _('Translated text')
template = 'blocks/translatable_text_block.html'

class TranslatableTextBlockAdapter(StructBlockAdapter):
js_constructor = "website.blocks.TranslatableTextBlock"

@cached_property
def media(self):
structblock_media = super().media
return Media(
js=structblock_media._js + ["website/js/translatable_text_block.js"],
css=structblock_media._css
)

register(TranslatableTextBlockAdapter(), TranslatableTextBlock)
< /code>
шаблон администратора (transfatable_text_block_admin.html): < /p>
{% load wagtailadmin_tags %}

{% if help_text %}


{% icon name="help" classname="default" %}
{{ help_text }}


{% endif %}
{% for child in children %}
{{ child }}

{% if child.block.label %}
{{ child.block.label }}{% if child.block.required %}*{% endif %}
{% endif %}
{{ child.render_form }}

{% endfor %}

< /code>
код Javascript (transfatable_text_block.js): < /p>
if (typeof TranslatableTextBlockDefinition === "undefined") {
class TranslatableTextBlockDefinition extends window.wagtailStreamField.blocks.StructBlockDefinition {
render(placeholder, prefix, initialState, initialError) {
const block = super.render(placeholder, prefix, initialState, initialError); // The error happens on this line.
// Some custom modifications would happen here.
return block;
}
}

window.telepath.register("website.blocks.TranslatableTextBlock", TranslatableTextBlockDefinition);
}
< /code>
Ошибка JavaScript: < /p>
TypeError: e is null
vendor.js:2:191488
Uncaught TypeError: e is null
comments.js:1:47007
< /code>
Кто -нибудь знаком с вложенным structblock для Streamfields в настройках администратора? Или, может быть, я пойду на это неправильно, и есть более простое решение? Я приветствую кадрские проблемы :)

Подробнее здесь: https://stackoverflow.com/questions/796 ... ignable-de
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»