首页 > 解决方案 > 在模板中向 django 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”(似乎没有可能基于一些尝试)或c)包括单独的列表(ap和actdur作为查询的补充。只是好奇一些额外的线索可以向基本列表视图添加更多对象细节。

标签: djangodjango-templates

解决方案


对此的实际解决方案是在 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

这返回了我想包含在列表视图中的附加摘要信息,该信息也用于详细视图 在此处输入图像描述


推荐阅读