Django - почему мой виджет очищается при сохранении?

У меня проблемы с пользовательским виджетом django, используемым для представления HTML-данных.

Я начал с шаблона стандартной текстовой панели django:

class Descriptionarea(forms.Widget):
    template_name = "widgets/descriptionarea.html"

    def __init__(self, attrs=None):
        super().__init__(attrs

widgets/descriptionarea.html:

<textarea name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
{% if widget.value %}{{ widget.value }}{% endif %}</textarea>

Который отлично работает как элемент моей инлайн-формы:

class InlineForm(forms.ModelForm):
    description = forms.CharField(widget=Descriptionarea)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

который является частью моего TabularInline (используется django-nested-admin):

class TabularInline(NestedStackedInline):
    form = InlineForm
    fields = ("title", "description")
    readonly_fields = ("title", )
    model = MyModel
    max_num = 0

Я хочу представить описание в виде HTML документа, поэтому я изменил шаблон:

<details>
<summary>description</summary>
<pre name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
{% if widget.value %}{{ widget.value | safe }}{% endif %}
</pre>
</details>

К сожалению, это не работает, поскольку теперь я не могу использовать сохранение на страницах администратора, на что жалуется Django:

This field is required.

Действительно, при сохранении весь виджет очищается. Второй вопрос - когда я добавляю поле description в список readonly_fields, то оно превращается в простой label. Возможно ли предоставить собственный виджет readonly?

Вернуться на верх