向模板中的django listview对象添加详细信息

时间:2020-04-05 14:25:31

标签: django django-templates

我有一个列表视图,希望在与对象详细信息的链接相同的行中插入有关对象的其他详细信息(活动持续时间和平均功率)(最好的描述方式是我想要一些detailview属性插入到listview中)。目前,我能达到的最佳效果是在object_list下面列出一个单独的上下文字典,如以下屏幕快照所示:

enter image description here

以下是我的列表视图:

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作为查询的补充)。只是好奇一些其他线索,以便向基本列表视图添加更多对象详细信息。

2 个答案:

答案 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

这返回了我想包含在listview中的其他摘要信息,该信息也在detailview中使用 enter image description here

相关问题