Есть ли способ разрешить различным шаблонам перекрестное чтение содержимого в Django? - PullRequest
0 голосов
/ 27 мая 2020

Я работаю над проектом, который извлекает данные из локальной базы данных и организует их в каталог, а затем вызывает API для отображения цены каждого элемента, вот как я реализовал его в Views.py

class MarketgroupsListView(generic.ListView):
    model = Marketgroups
    context_object_name = 'marketgroups'
    template_name = 'sde/marketgroups_list.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        pk = self.kwargs['pk']
        context['marketgroups'] = Marketgroups.objects.filter(parentgroupid=pk).order_by('marketgroupid') #get marketgroups list
        context['invtypes'] = Invtypes.objects.filter(marketgroupid=pk).order_by('typeid') #get items list
        return context

class InvtypeDetailView(generic.DetailView):
    model = Invtypes

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        pk = self.kwargs['pk']
        url = '/api/typeid={0}'.format(pk)
        response = requests.get(url)
        context['data'] = xmltodict.parse(response.content)['price']
        return context

Это работает, но данные о ценах могут отображаться только в InvtypeDetailView. Я хочу, чтобы MarketgroupsListView мог читать и отображать данные о ценах в InvtypeDetailView, чтобы люди могли сразу проверять данные о ценах для всего списка товаров. Но я не знаю, как это сделать.

Я попытался поместить вызывающий код API в class MarketgroupsListView, но он получил только pk текущего URL-адреса, который равен marketgroups 'not a invtypes

Итак, есть ли способ перекрестного чтения содержимого между разными представлениями или разными шаблонами? Или есть другие решения?

...