可查看但不可更改!- Django

28 投票
12 回答
27794 浏览
提问于 2025-04-16 00:08

有没有可能给用户一个权限,让他们可以查看,但不能修改或删除内容?

现在我看到的权限只有“添加”、“修改”和“删除”,但没有“查看”的选项。

我真的很需要这个,因为有些用户只能查看管理面板,以便了解添加了什么内容。

12 个回答

3

你不能仅仅在Django的管理后台查看东西。

为此有一个叫做 databrowse 的应用。

7

你可以使用django-admin-view-permission这个应用

pip install django-admin-view-permission

INSTALLED_APPS = [
    'admin_view_permission',
    'django.contrib.admin',
    ...
]

更新:

Django 2.1自带了查看权限的功能。

24

更新: 从Django 2.1开始,这个功能现在是内置的

在admin.py文件中

# Main reusable Admin class for only viewing
class ViewAdmin(admin.ModelAdmin):

    """
    Custom made change_form template just for viewing purposes
    You need to copy this from /django/contrib/admin/templates/admin/change_form.html
    And then put that in your template folder that is specified in the 
    settings.TEMPLATE_DIR
    """
    change_form_template = 'view_form.html'

    # Remove the delete Admin Action for this Model
    actions = None

    def has_add_permission(self, request):
        return False

    def has_delete_permission(self, request, obj=None):
        return False

    def save_model(self, request, obj, form, change):
        #Return nothing to make sure user can't update any data
        pass

# Example usage:
class SomeAdmin(ViewAdmin):
    # put your admin stuff here
    # or use pass

在change_form.html文件中,把这个部分替换为:

{{ adminform.form.non_field_errors }}

用这个部分替换:

<table>
{% for field in adminform.form %}
    <tr>
      <td>{{ field.label_tag }}:</td><td>{{ field.value }}</td>
    </tr>
{% endfor %}
</table>

然后通过删除这一行来去掉提交按钮:

{% submit_row %}

撰写回答