如题,有些 django-admin 默认是所有 model 都会加上添加、修改、删除之类的功能,有没有办法禁用某个 model 的部分功能?
如题,有些 django-admin 默认是所有 model 都会加上添加、修改、删除之类的功能,有没有办法禁用某个 model 的部分功能?
@admin.register(Attachs)
class AttachsAdmin(admin.ModelAdmin):
actions = None
list_display = ('file_md5', 'file_ext', 'file_size', 'content_type', 'name', 'origin', 'reference_num', 'client_ip', 'created_at', )
search_fields = ('file_md5', 'file_ext', 'name', )
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 False
4 回答4.5k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
has_add_permission
has_delete_permission
方法,可以定制 model 的修改删除行为。get_readonly_fields
方法,可以针对某些字段设置为只读而不能修改。save_model
可以修改 model 保存时候的一些行为。change_view
方法,可以修改 修改 model 时候的行为总而言之,如果需要自定义
django
的admin
又不想更改django
源码,就只能重写admin.ModelAdmin
这个 class 的一些方法接口。配合返回的queryset
和permission
,大部分业务需求都能完成。具体自行 google 那些方法的用法。一篇参考 Django admin的一些有用定制
更高级的更灵活的定制,就是自己撸一个后台出来。