django - 在模板中向 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作为查询的补充。只是好奇一些额外的线索可以向基本列表视图添加更多对象细节。
解决方案
对此的实际解决方案是在 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
推荐阅读
- javascript - 为什么要在更改反应状态之前或在处理它时克隆反应状态?
- ios - 使用解释器解决 Xamarin iOS Emit PlatformNotSupportedException
- angular - 在 Angular 组件 html 模板中使用 getter
- r - 如何更改 ggplot2 上的标签以悬停在 R 中?
- ios - 子类可以不继承超类的初始化程序吗?我们什么时候使用所需的初始化程序?
- python-3.x - Python3 Slack RTMClient 在代理后面不工作
- sql - 插入查询的列是另一个表中的记录总数
- python - 如何在 Django 查询集中组合字段?
- pandas - Panda 将相同的索引名称移动到唯一的列名
- c# - 是否有替代 IRibbonControl.Context 的解决方法或替代方法来访问 Excel 2016 或更高版本中的正确窗口和工作簿?