Django_tables2 mixins, отображение несоединяемых моделей с конкатенированными строками

По какой-то надуманной причине у меня есть два набора запросов, которые совпадают по порядку строк, но не имеют общего внешнего ключа, поэтому объединение невозможно. У меня нет возможности добавить ключ, поэтому я хотел бы сделать "hstack" из двух результатов и отобразить их в виде таблицы. Это легко сделать с помощью jinja templating, но я хотел бы использовать удобные функции tables2 (например, сортировку и т.д.) и сохранить возможность обхода внешнего ключа для каждого набора запросов.

Эквивалентно, рассмотрим возможность предоставления QuerySet и списка внешних данных, которые являются результатом операции над этим QuerySet.

qs = ModelA.objects.filter( ... ) # queryset
ext_data = get_metadata_from_elsewhere(qs) # returns a list of dict

# len(qs) == len(ext_data)

Например, с двумя моделями я могу создать Mixin:

class ModelATable(tables.Table):
    class Meta:
        model = ModelA

class ModelBTable(ModelATable, tables.Table):
    class Meta:
        model = ModelB

В результате получается отрисованная таблица с полями из обеих моделей. Если я предоставляю ModelBTable(query_model_b), то отображаются только эти поля, как и ожидалось, и аналогично для ModelBTable(query_model_a). Как мне предоставить и query_model_a, и query_model_b?

Кроме того, если есть простой способ сделать hstack(query_a, query_b), то это, кажется, было бы проще. Предоставление словаря объединенных результатов не очень хорошо, потому что я теряю доступ к внешним ключам, но я полагаю, что я мог бы добавить некоторую логику, чтобы сделать это при генерации объединенного словаря? Но хорошо, что tables2 автоматически определяет вещи на основе типа поля модели, а я бы это потерял.

Я предполагаю, что внутренне tables.Table просто итерирует предоставленные данные и пытается получить доступ по ключу. Поэтому я думаю, что мне нужно предоставить объект данных, который может разрешать имена из любой модели?

Вернуться на верх