Мне кажется, что я прочитал об этом сто раз, но все еще не могу понять, как использовать разрешения в 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 … %}
, тем самым удаляя проверки разрешений, позволяет разумеется видеть кнопки.