Как я могу преобразовать объект Python в строку, используя контекст?
Я пытаюсь визуализировать экземпляры объектов в шаблонах django так, как это делают формы. Итак, где-то в представлении создается экземпляр объекта: my_object = MyObject()
и передается в шаблон в контексте: context['my_object'] = my_object
,
Когда шаблон обрабатывается, __str__()
метод MyObject
вызывается для создания строки для заполнения. MyObject
это выглядит примерно так:
def __str__(self):
""" Render template """
return mark_safe(
render_to_string(self.template, {'options': self.options})
)
Поскольку шаблон объекта хотел бы добавить код в блоки CSS и JS, используя sekizai, мне нужен контекст рендеринга. Есть ли способ (например, с использованием другого метода), чтобы получить этот контекст?
1 ответ
Решение
Я боюсь, что это невозможно, и это не путь Джанго!
Что бы я сделал, это:
- Объявите шаблон (названный как
mymodel_repr.html
). - Напишите в нем, как именно я бы хотел, чтобы меня визуализировали.
- Сохраните его среди других шаблонов (возможно, в приложении
templates/
папка тоже). - Изменить
__str__(self)
вернутьrequired
поле или что-то еще. - Теперь каждый раз, когда я хочу напечатать объект (шаблонным способом со всем контекстом) этой модели, я просто
include it
как это:{% include 'mymodel_repr.html' with obj=obj_i_want_to_print %}
,
С помощью этого метода вы отделяете бизнес от презентации.
Надеюсь, это поможет вам!