1

djangoviews.pyファイルにdayarchiveviewがあります

class day_archive(DayArchiveView):
    model=Timer
    paginate_by=12
    allow_future =True
    allow_empty=True
    month_format = '%m'
    day_format='%d'
    date_field='start_hour'
    template_name='timer/timer_archive_date'

    def get_queryset(self):
        return Timer.objects.filter(author=self.request.user)

しかし、次のようなdjangotables2を使用して、テーブルとして返されるデータをレンダリングしたいと思います。

 import django_tables2 as tables

 class Job_table(tables.Table):
    class Meta: 
    model = Timer
    attrs = {"class": "paleblue"}
    fields= ('start_hour','end_hour','category','subcategory','duration')

    def render_duration(self,value):
        from timehuman import sectohour
        hh= sectohour(value)
        return hh

レンダリングされたリストではなく、テーブルとしてデータをレンダリングするにはどうすればよいですか?(djangoによるcontext object_list)object_listコンテキストに送信されるデータにアクセスして変更するにはどうすればよいですか?

4

1 に答える 1

0

これは私がやったことです:ハックかもしれませんが、ビューに行くのと同じデータにアクセスでき、それをテーブルとしてレンダリングすることができます。

class day_archive(DayArchiveView):
    model=Timer
    paginate_by=12
    allow_future =True
    allow_empty=True
    month_format = '%m'
    day_format='%d'
    date_field='begin_time'
    template_name='timer/timer_archive_date'

    def get_queryset(self):
        return Timer.objects.filter(author=self.request.user)

    def render_to_response(self, context, **response_kwargs):
        """
        Returns a response, using the `response_class` for this
        view, with a template rendered with the given context.

        If any keyword arguments are provided, they will be
        passed to the constructor of the response class.
        """

    tbl = context['object_list']  #this line is my hack, i dont know better.
    if (tb1 != None):
        jt = Timer_table(blo)
        RequestConfig(self.request).configure(jt)
        from django.db.models import Sum
        total = tbl.aggregate(Sum('duration'))
        t2 = total['duration__sum']
        if (t2 != None):
            timedel= str(datetime.timedelta(seconds=float(t2)))
            context['table']= jt
            context['total'] = timedel 

    return self.response_class(
        request = self.request,
        template = self.get_template_names(),
        context = context,
        **response_kwargs
    )
于 2013-02-10T16:38:11.317 に答える