Django 表中的条件

Conditional in Django Tables

我试图在我的 Django table 中包含一个条件语句,但我在寻找正确的语法时遇到了一些问题。

我的一个模型中有一个布尔字段,基于该值 - 我想为该特定数据库记录呈现不同的 label_link 和回调 url。

这是我使用的代码:

class Feature(BaseTable):
    orderable = False
    title_english = tables.Column()
    featured_item = tables.Column()
    if (featured_item == False):
        actions = tables.TemplateColumn("""
        {% url 'add_feature' pk=record.pk as url_ %}
        {% label_link url_ 'Add to Features' %}
        """, attrs=dict(cell={'class': 'span1'}))
    else:
        actions = tables.TemplateColumn("""
        {% url 'remove_feature' pk=record.pk as url_ %}
        {% label_link url_ 'Remove From Features' %}
        """, attrs=dict(cell={'class': 'span1'}))

现在我知道目前这只是检查值是否存在 - 因此总是在 else 语句下呈现代码。

我一直无法找到涵盖 Django tables 的这种特殊细微差别的任何文档。

注意:我使用的是 Django 1.5 和 Python 2.7

您不能将 if 语句放入 Feature class - 它在加载 class 时处理,因此您无权访问 table 数据了。

TemplateColumn 中,您可以使用 record 访问 table 的当前行,因此您可以将逻辑移到那里。

class Feature(BaseTable):
    ...
    actions = tables.TemplateColumn("""
    {% if not record.featured_item %}
    {% url 'add_feature' pk=record.pk as url_ %}
    {% label_link url_ 'Add to Features' %}
    {% else %}
    {% url 'remove_feature' pk=record.pk as url_ %}
    {% label_link url_ 'Remove From Features' %}
    {% endif %}
    """, attrs=dict(cell={'class': 'span1'}))