Django ModelAdmin 设置只读

本文介绍如何在Django的ModelAdmin中实现字段的只读功能,通过自定义ModelAdmin子类并重写相关方法,可以禁止用户对指定字段进行编辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


转载于:https://my.oschina.net/ranvane/blog/306771

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值