добавление подробной информации к django объекту списка в шаблоне - PullRequest
1 голос
/ 05 апреля 2020

У меня есть просмотр списка, в котором я надеюсь вставить дополнительные сведения об объекте (продолжительность действия и средняя мощность) в ту же строку, что и ссылка на детали объекта (лучший способ описать это будет то, что я хочу некоторые подробные атрибуты вставлены в список). На данный момент лучшее, что я могу достичь - это отдельный контекстный словарь, перечисленный ниже 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

В моем исследовании мне не удалось найти, есть ли способ а) аннотировать набор запросов с помощью контекста или б) l oop через контекстный словарь 'actdict' в объектном списке l oop (не представляется возможным на основании некоторых попыток) или c) включить отдельные списки (ap и actdur в качестве дополнений к запросу. Просто любопытно, что некоторые дополнительные приводит к добавьте еще несколько деталей объекта в базовый список c.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Фактическим решением этой проблемы было добавление объекта запроса в def get_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

Это вернуло дополнительную сводную информацию, которую я хотел включить в просмотр списка, который также используется в detailview enter image description here

0 голосов
/ 05 апреля 2020

Ваш context предназначен для хранения ваших данных, но способ его отображения зависит от шаблона HTML , который вы будете использовать: https://docs.djangoproject.com/en/3.0/topics/templates/

...