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



我有一个视图,该视图使我能够一次使用两个不同的模型,这要归功于Itertools链。我正在将两个链式模型的实例渲染在模板中的表格中,并且如果实例来自一个模型而不是另一个模型,则需要对表格的格式进行不同。

基本上是:我正在链接两个型号并将其实例显示在表格中,并且所有包含模型A实例的行的行都应使用黄色背景进行格式化,并且所有包含B模型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

在逻辑上,我在模板中需要的是这样的东西:

if 
    object in object_list ***belongs*** to Program.objects.all() 
    (etc)
else 
    (etc)

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

我还研究了模板标签,但找不到正确的方法。

预先感谢您。

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

因此,我建议您简单地将一个添加到您的类定义:

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

现在您可以做:

{% if object.model_name == 'Program' %}
    ...
{% else %}
    ...
{% endif %}

最新更新