Django - itertools.chain. Данные выбираются для обеих моделей отдельно. как мне объединить и показать результат? - PullRequest
0 голосов
/ 05 марта 2020

У меня есть две разные модели, каждая из которых имеет разные столбцы, связанные одним идентификатором. Я хочу создать поисковую страницу, которая будет искать результаты обеих моделей, объединяя их с идентификатором и отображая результаты.

Это простое sql, которое я хочу выполнить:

'SELECT "SSDatabase_metadataform".*, "SSDatabase_uploadmeta"."datafile", CASE WHEN "SSDatabase_metadataform"."Embargo_Time" <= current_date THEN "SSDatabase_uploadmeta"."path_id" END AS link from "SSDatabase_metadataform" INNER JOIN "SSDatabase_uploadmeta" ON "SSDatabase_metadataform"."id" = "SSDatabase_uploadmeta"."path_id" order by "id"'

Я создаю поисковый запрос, и он отлично работает, показывая данные обеих моделей, но показывает их отдельно. Я не уверен, как показать результаты, соединяющие обе выборки

class SearchResultsView(ListView):
    template_name = 'searchresults.html'

    def get_queryset(self): # new

    query = self.request.GET.get('q')
    meta_list= Metadataform.objects.filter(Q(id__icontains=query) | Q(Authors_Name__icontains=query) | Q(Affliations__icontains=query) | Q(Methods__icontains=query) | Q(Instruments__icontains=query) | Q(Software__icontains=query)| Q(Models__icontains=query)| Q(Device__icontains=query))

        dataset_list = uploadmeta.objects.filter(Q(datafile__icontains=query))

        object_list = list(chain(meta_list, dataset_list))
        return object_list

И это моя страница html. Файл данных из другой модели не отображается. при поиске файла данных другие результаты не отображаются

<table class="table table-striped">
        <thead>
            <tr>
                <th>Meta ID</th>
                <th>Author</th>
                <th>Affiliations</th>
                <th>Methods</th>
                <th>Instruments</th>
                <th>Models</th>
                <th>Device</th>
                <th>Configuration</th>
                <th>Download</th>
            </tr>
        </thead>
        <tbody>
          {% if object_list %}

          {% for a in object_list %}


            <tr>
                <td><a id="idclicked" href="listdec/{{a.id}}/" title="click to see Metadata">{{ a.id }}</td></a>
                <td>{{ a.Authors_Name }}</td>
                <td>{{ a.Affliations}} </td>
                <td>{{ a.Methods}}</td>
                <td>{{ a.Instruments}}</td>
                <td>{{ a.Models}}</td>
                <td>{{ a.Device}}</td>
                <td>{{ a.Configuration}}</td>
                <td> 
                   {{ a.datafile }}
                  </td>
            </tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...