Я не думаю, что есть механизм, который автоматически делает то, что вы хотите, из коробки.
Но для определения пути к странице редактирования администратора, основанной на идентификаторе объекта, все, что вам нужно, это две части информации:
а) self.model._meta.app_label
б) self.model._meta.module_name
Затем, например, чтобы перейти на страницу редактирования для этой модели, вы должны сделать:
'../%s_%s_change/%d' % (self.model._meta.app_label, self.model._meta.module_name, item.id)
Взгляните на django.contrib.admin.options.ModelAdmin.get_urls
, чтобы увидеть, как они это делают.
Полагаю, у вас может быть вызываемый объект, который принимает имя модели и идентификатор, создает модель указанного типа просто для получения метки и имени (не нужно обращаться к базе данных) и генерирует URL-адрес выше.
Но вы уверены, что не можете использовать встроенные функции? Для лучшего пользовательского интерфейса было бы лучше иметь все связанные компоненты на одной странице ...
Редактировать:
Inlines (связанный с документами) позволяет интерфейсу администратора отображать родительские и дочерние отношения на одной странице, а не разбивать их на две.
В приведенном вами примере сообщения / автора использование встроенных символов будет означать, что на странице редактирования сообщений будет также отображаться встроенная форма для добавления / редактирования / удаления авторов. Гораздо более естественным для конечного пользователя.
В представлении списка администраторов вы можете создать вызываемый элемент в модели Post, который будет отображать список авторов через запятую. Таким образом, у вас будет представление списка сообщений с указанием соответствующих авторов, и вы редактируете авторов, связанных с сообщением, непосредственно в интерфейсе администратора сообщений.