查看权限,但不能更改! - Django

Rad*_*Hex 23 python django django-admin

是否可以授予用户查看权限,但不能更改或删除.

目前在我看到的唯一权限是"添加","更改"和"删除"...但在那里没有"读/看".

我真的需要这个,因为有些用户只能咨询管理面板,以便查看已添加的内容.

dan*_*son 20

在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
Run Code Online (Sandbox Code Playgroud)

在change_form.html中替换为:

{{ adminform.form.non_field_errors }}
Run Code Online (Sandbox Code Playgroud)

有了这个:

<table>
{% for field in adminform.form %}
    <tr>
      <td>{{ field.label_tag }}:</td><td>{{ field.value }}</td>
    </tr>
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)

然后删除此行删除提交按钮:

{% submit_row %}
Run Code Online (Sandbox Code Playgroud)

  • 这很好,但是Django文档说save_model应该保存或删除数据,它不应该用于否决目的.https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#modeladmin-methods (2认同)

Ant*_*hov 6

您可以使用django-admin-view-permission应用程序:

pip install django-admin-view-permission

INSTALLED_APPS = [
    'admin_view_permission',
    'django.contrib.admin',
    ...
]
Run Code Online (Sandbox Code Playgroud)

更新:

Django 2.1具有开箱即用的查看权限.