Я работаю над проектом, который извлекает данные из локальной базы данных и организует их в каталог, а затем вызывает 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
Итак, есть ли способ перекрестного чтения содержимого между разными представлениями или разными шаблонами? Или есть другие решения?