Readonly models in Django admin interface?

前端 未结 14 1538
北恋
北恋 2020-12-02 05:53

How can I make a model completely read-only in the admin interface? It\'s for a kind of log table, where I\'m using the admin features to search, sort, filter etc, but there

14条回答
  •  萌比男神i
    2020-12-02 06:08

    See https://djangosnippets.org/snippets/10539/

    class ReadOnlyAdminMixin(object):
        """Disables all editing capabilities."""
        change_form_template = "admin/view.html"
    
        def __init__(self, *args, **kwargs):
            super(ReadOnlyAdminMixin, self).__init__(*args, **kwargs)
            self.readonly_fields = self.model._meta.get_all_field_names()
    
        def get_actions(self, request):
            actions = super(ReadOnlyAdminMixin, self).get_actions(request)
            del_action = "delete_selected"
            if del_action in actions:
                del actions[del_action]
            return actions
    
        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):
            pass
    
        def delete_model(self, request, obj):
            pass
    
        def save_related(self, request, form, formsets, change):
            pass
    

    templates/admin/view.html

    {% extends "admin/change_form.html" %}
    {% load i18n %}
    
    {% block submit_buttons_bottom %}
      
    {% endblock %}
    

    templates/admin/view.html (for Grappelli)

    {% extends "admin/change_form.html" %}
    {% load i18n %}
    
    {% block submit_buttons_bottom %}
      
    {% endblock %}
    

提交回复
热议问题