Django: Как изменить текстовое поле перед его отображением в админке - PullRequest
1 голос
/ 05 октября 2009

У меня есть модель Django с текстовым полем. Я хотел бы изменить содержимое текстового поля, прежде чем оно будет представлено пользователю в Django Admin.

Я ожидал увидеть эквивалент сигнала post_load , но, похоже, его не существует.

Чтобы быть более конкретным:

У меня есть текстовое поле, которое принимает пользовательский ввод. В этом текстовом поле есть разделитель read more. Текст перед разделителем идет в поле introtext, все после идет в поле fulltext.

В то же время я хочу отображать текстовое поле пользователя 1 только при редактировании статьи.

Мой план состоял в том, чтобы on_load считывать данные из интротекста и полнотекстового поля и объединять их в полнотекстовое текстовое поле. На pre_save я разделил бы текст, используя разделитель read more, и сохранил бы вступление в introtext и остаток в полном тексте.

Итак, перед тем, как отобразить форму, мне нужно заполнить полнотекстовое поле с помощью

introtext + '<!--readmore-->' + fulltext

и я должен быть в состоянии сделать это для существующих предметов.

Ответы [ 2 ]

2 голосов
/ 05 октября 2009

Загляните в Предоставляя свою собственную форму для страниц администратора.

Как только у вас есть собственная форма, вы можете использовать параметр по умолчанию в форме, чтобы предоставить желаемое начальное значение. См. Документы по Начальному параметру для поля формы. Как показывает эта ссылка, в качестве исходного значения можно использовать вызываемый элемент или константу.

1 голос
/ 05 октября 2009

Нет post_load, потому что нет функции загрузки.

Загрузка экземпляра выполняется в функции init , поэтому правильный ответ - использовать сигнал post_init.

...