В зависимости от ваших других требований может быть хорошей идеей превратить их в подклассы общего суперкласса, содержащего общие элементы.
Трудно сказать, допустимо ли это, но если вы это сделаете, вы можете запросить различные типы объектов по отдельности или вместе, вызвав
SuperClass.objects.all().order_by('-pub_date')[:9]
, что сделает 9 первых объектов независимо от того, какой они подкласс. Конечно, если предположить, что суперкласс называется SuperClass. Конечно, это не гарантирует, что есть 3 каждой модели.
Еще один простой способ решить эту проблему - хотя, по общему признанию, не использовать запрос, просто сортировать списки.
entries = sorted(list(interviews) + list(publications) + list(published), key=lambda x: x.pub_date, reverse=True)
должно работать - в основном превращать их в списки и сортировать их.