Readonly models in Django admin interface?

前端 未结 14 1545
北恋
北恋 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条回答
  •  暖寄归人
    2020-12-02 06:26

    If you want the user become aware that he/she cannot edit it, 2 pieces are missing on the first solution. You have remove the delete action!

    class MyAdmin(ModelAdmin)
        def has_add_permission(self, request, obj=None):
            return False
        def has_delete_permission(self, request, obj=None):
            return False
    
        def get_actions(self, request):
            actions = super(MyAdmin, self).get_actions(request)
            if 'delete_selected' in actions:
                del actions['delete_selected']
            return actions
    

    Second: the readonly solution works fine on plain models. But it does NOT work if you have an inherited model with foreign keys. Unfortunately, I don't know the solution for that yet. A good attempt is:

    Whole model as read-only

    But it does not work for me either.

    And a final note, if you want to think on a broad solution, you have to enforce that each inline has to be readonly too.

提交回复
热议问题