When Misago renders a template, it passes model instances in context dict like "thread": thread or "categories": [category_1, category_2...].
This is standard approach for Django projects and there's nothing wrong with it.
But unpacking models to dicts before passing them to templates would further empower the plugin authors who could change values displayed on the pages directly without having to do weird and flaky tricks with model instances. For example
{
"thread": {
"title": thread.title,
"obj": thread,
},
}
To change thread's title (eg. to censor it from forbidden words) one could update title key.