Django ModelAdmin 设置只读

在使用django的时候,ModelAdmin默认对于model的操作只有增加,修改和删除,但是总是有些字段是不希望用户来编辑的,使用下面的代码可以使ModelAdmin中让他显示为只读:

class ReadOnlyModelAdmin(admin.ModelAdmin):
    """ModelAdmin class that prevents modifications through the admin.
 
    The changelist and the detail view work, but a 403 is returned
    if one actually tries to edit an object.
    """
 
    actions = None
 
    def get_readonly_fields(self, request, obj=None):
        return self.fields or [f.name for f in self.model._meta.fields]
 
    def has_add_permission(self, request):
        return False
 
    # Allow viewing objects but not actually changing them
    def has_change_permission(self, request, obj=None):
        if request.method not in ('GET', 'HEAD'):
            return False
        return super(ReadOnlyModelAdmin, self).has_change_permission(request, obj)
 
    def has_delete_permission(self, request, obj=None):
        return False

对于你要设置为只读的ModelAdmin,继承这个类:

class TestAdmin(ReadOnlyModelAdmin):
    list_display = ('','',)
    list_filter = ('',)
    search_fields = ('',)

然后在admin中注册即可:

admin.site.register(Test,TestAdmin)


你可能感兴趣的:(Django ModelAdmin 设置只读)