在递送到模板之前,在Django通用视图中为查询集附加其他值

时间:2016-08-14 15:24:31

标签: python django django-templates django-views

我有以下观点:

class AppointmentListView(LoginRequiredMixin, ListView):

    queryset = Appointment.objects.prefetch_related('client','patients')

我需要能够根据以下内容为每个返回的Appointment对象添加一个额外的变量:

status_choices={
    'STATUS_UPCOMING':'default',
    'STATUS_ARRIVED':'primary',
    'STATUS_IN_CONSULT': 'success',
    'STATUS_WAITING_TO_PAY':'info',
    'STATUS_PAYMENT_COMPLETE':'warning',
}

值('default','primary'等)对应于我想根据约会类型使用的Bootcamp主题中的标准css类。例如,'default'产生一个灰色按钮,'警告'一个红色按钮等。

我需要根据记录的状态将每个约会记录映射到某个css按钮('即将'将显示'默认'类等)。

我最初的想法是遍历查询集并构建一个单独的数组/字典,将Appointment pk映射到给定的css类,例如 1:'success', 2:'warning',然后将其作为上下文变量传递。

但是我想知道我是否可以直接将值添加到每个Appointment对象(可能将查询集保存为列表?)这将是一个更清晰的解决方案,但我不确定应该如何处理它。

非常感谢任何想法

1 个答案:

答案 0 :(得分:1)

你应该像这样重载ListView的get_queryset方法

def get_queryset(self, **kwargs):
    queryset = super(AppointmentListView, self).get_queryset(**kwargs)
    # Add new elements here
    ...
    return queryset