Я создаю сайт, на котором пользователи могут создавать «лекции», которые имеют стилизованный текст лекции. Стиль облегчается с помощью плагина TinyMCE, применяемого при заполнении поля lecture_text
при создании лекции. Создание лекции работает хорошо, но я бы хотел, чтобы этот стилизованный текст уже находился в области текста лекции в форме обновления лекции. Насколько я понимаю, я могу установить содержимое по умолчанию TinyMCE CharField
с аргументом initial
. Вот мой код прямо сейчас:
editLecture HTML передает идентификатор лекции в представление editLecture
...
<form method="post" action="{% url 'openvlab:editLecture' lecture_id %}">
{% csrf_token %}
{{ lecture_form.as_p }}
<script src="https://cloud.tinymce.com/5/tinymce.min.js?apiKey=re1omq7fkhbmtyijhb3xvx4cfhyl3op33zggwlqkmbt5swvp"></script>
<script>tinymce.init({ selector:'textarea' });</script>
<button type="submit">Save changes</button>
</form>
представление editLecture передает идентификатор лекции в форму обновления лекции
def editLecture(request,id_string):
...
lecture_form = LectureUpdateForm(lecture_id=id_string)
...
Форма обновления лекции
class LectureUpdateForm(forms.ModelForm):
def __init__(self,*args,**kwargs):
lecture_id=kwargs.pop("lecture_id")
lecture = Lecture.objects.get(id__exact=lecture_id)
super(LectureUpdateForm, self).__init__(*args,**kwargs)
self.fields['lecture_text'].widget = forms.CharField(
widget=TinyMCEWidget(
attrs={'required': False, 'cols': 30, 'rows': 10},
),
initial=lecture.lecture_text # this is where I try to define the initial content of the editor
)
class Meta:
model = Lecture
fields = ['lecture_title', 'lecture_description', 'lecture_text']
Однако при попытке доступа к странице редактирования лекции я получаю AttributeError: у объекта 'CharField' нет атрибута 'is_hidden'. (Если вам нужен более подробный ответ, дайте мне знать, и я предоставлю его.)
Я довольно новичок в Django, поэтому я прошу прощения, если я пропустил что-то очевидное или мой код не соответствует соглашениям; насколько мне известно, эта ошибка не устранена ни в одном из других вопросов, которые я видел на этом сайте.