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?