链接Django模型:如何根据特定的mod在模板上格式化结果

2024-09-29 19:26:53 发布

您现在位置:Python中文网/ 问答频道 /正文

多亏了itertoolschain,我的视图允许我同时处理两个不同的模型。我在模板的一个表中呈现两个链式模型的实例,如果实例来自一个模型而不是另一个模型,我需要对表的行进行不同的格式设置。在

所以基本上:我链接两个模型,并在一个表中显示它们的实例,表中包含模型a实例的所有行都应该用黄色背景格式化,而包含模型B实例的所有行都应该有蓝色背景。在

以下是视图:

class BaseView(generic.ListView):
    template_name = 'base/base_list.html'
    context_object_name = 'base_list'

    def get_queryset(self):
         queryset = Document.objects.order_by('due_date')
         return queryset

    def get_context_data(self, **kwargs):
         context = super(BaseView, self).get_context_data(**kwargs)
         context['object_list'] = sorted(
             itertools.chain(Program.objects.all(), Document.objects.all()),
             key=attrgetter('validity_date'),
             reverse=True)
         return context

在逻辑上,我需要的模板应该是这样的:

^{pr2}$

问题是:我应该如何表达属于?在

我也研究过模板标记,但找不到正确的方法。在

提前谢谢你。在


Tags: 实例name模型self视图模板baseget
1条回答
网友
1楼 · 发布于 2024-09-29 19:26:53

正如我在评论中提到的,您应该寻找一种识别模型本身的方法,而不是检查它是否在列表中。有一种访问模型名的内置方法,但不幸的是,它位于_meta属性中,并且不允许在模板中使用以下划线开头的属性。在

因此,我建议您只需在类定义中添加一个:

class Program(models.Model):
    model_name = 'Program'
    ...

现在您只需:

^{pr2}$

相关问题 更多 >

    热门问题