在使用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)