我有一个列表视图,希望在与对象详细信息的链接相同的行中插入有关对象的其他详细信息(活动持续时间和平均功率)(最好的描述方式是我想要一些detailview属性插入到listview中)。目前,我能达到的最佳效果是在object_list下面列出一个单独的上下文字典,如以下屏幕快照所示:
以下是我的列表视图:
class RideDataListView(LoginRequiredMixin, ListView):
model = RideData
context_object_name='object_list'
template_name='PMC/ridedata_list.html'
def get_queryset(self):
queryset = super(RideDataListView, self).get_queryset()
return queryset
def get_context_data(self, *args, **kwargs):
model = RideData
context = super(RideDataListView, self).get_context_data(*args, **kwargs)
records = list(RideData.objects.all().values())
actdict2={}
id=[]
ap=[]
actdur=[]
for record in records:
actdf=pd.DataFrame.from_dict(record)
id.append(actdf['id'].iloc[0])
ap.append(actdf['watts'].mean())
actdur.append(str(timedelta(seconds=len(actdf['time']))))
actdf2=pd.DataFrame()
actdf2['id']=id
actdf2['ap']=ap
actdf2['actdur']=actdur
actdict2=actdf2.to_dict('records')
context['actdict']=actdict2
context['actdur']=actdur
return context
在我的研究中,我无法确定的是是否存在以下一种方法:a)使用上下文中的内容注释查询集,或者b)遍历object_list循环中的上下文字典“ actdict”(dosn基于某些尝试,似乎不太可能)或c)包括单个列表(ap和actdur作为查询的补充)。只是好奇一些其他线索,以便向基本列表视图添加更多对象详细信息。
答案 0 :(得分:0)
您的context
旨在包含您的数据,但显示方式取决于您将使用的 HTML模板:https://docs.djangoproject.com/en/3.0/topics/templates/
答案 1 :(得分:0)
对此的实际解决方案是在def get_queryset中添加到queryset对象
def get_queryset(self):
queryset = super(RideDataListView, self).get_queryset()
for obj in queryset:
record=list(obj.watts)
actdf=pd.DataFrame()
actdf['watts']=record
obj.actdur=str(timedelta(seconds=len(actdf['watts'])))
obj.ap=actdf['watts'].mean()
return queryset