You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django admin中禁用Item模型user字段修改,仅保留查看权限

Django Item模型user字段只读配置方案

根据你使用的场景,可选择对应实现方式:

1. Django Admin后台场景

在你的admin.py中注册Item模型时,将user加入只读字段列表即可,若需要新增时自动填充当前登录用户,可额外重写save_model方法:

from django.contrib import admin
from .models import Item

class ItemAdmin(admin.ModelAdmin):
    # 将user字段设置为只读
    readonly_fields = ('user',)

    # 新增Item时自动赋值为当前登录用户,不需要自动赋值可删除该方法
    def save_model(self, request, obj, form, change):
        if not change:
            obj.user = request.user
        super().save_model(request, obj, form, change)

admin.site.register(Item, ItemAdmin)

2. 自定义Form表单场景

自定义ModelForm时,将user字段的disabled属性设为True即可,Django会自动忽略前端提交的该字段修改内容,保留初始值:

from django import forms
from .models import Item

class ItemForm(forms.ModelForm):
    class Meta:
        model = Item
        fields = "__all__"

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields["user"].disabled = True

3. DRF接口场景

在序列化器中设置user字段为只读即可:

from rest_framework import serializers
from .models import Item

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields = "__all__"
        extra_kwargs = {
            "user": {"read_only": True}
        }

提示:上述方案均为业务交互层的限制,若需要彻底禁止该字段的更新操作,可额外搭配Django pre_save信号或者数据库触发器做校验拦截。

内容的提问来源于stack exchange,提问作者Xor0x

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:15:03