【发布时间】:2019-01-12 12:09:31
【问题描述】:
我觉得我已经阅读了一百遍,但我仍然无法弄清楚如何在 django-tables2 TemplateColumn 中使用权限。
我的目标是能够根据用户在给定模型上可能拥有或不拥有的权限来呈现列中的按钮。这对我来说听起来并不复杂,从我读过的内容来看,我应该能够使用{% if perms.myapp.delete_mymodel %} 之类的东西来实现我想做的事情。
这是我试图按预期工作的代码:
import django_tables2 as tables
MY_MODEL_ACTIONS = """
{% if perms.myapp.change_mymodel %}
<a href="{% url 'myapp:my_model_edit' pk=record.pk %}" class="btn btn-sm btn-warning"><i class="fas fa-edit"></i></a>
{% endif %}
{% if perms.myapp.delete_mymodel %}
<a href="{% url 'myapp:my_model_delete' pk=record.pk %}" class="btn btn-sm btn-danger"><i class="fas fa-trash"></i></a>
{% endif %}
"""
class MyModelTable(tables.Table):
# some columns
actions = tables.TemplateColumn(
verbose_name="",
template_code=MY_MODEL_ACTIONS,
)
class Meta(BaseTable.Meta):
model = MyModel
fields = (
# some columns
"actions",
)
在呈现表格时不会触发任何问题,但该列只是不显示任何按钮(是的,我确实有权显示它们)。删除{% if … %} 子句,从而删除权限检查,当然可以看到按钮。
【问题讨论】:
标签: django python-3.x django-templates django-tables2