如何在Django Admin中注册含created_user属性的模型?
Django Admin 配置含
created_user属性的模型 下面是完整的配置步骤,涵盖注册、自动填充、权限控制等核心需求:
1. 基础模型注册(最简版)
如果只是要在Admin里显示模型,直接注册即可,但此时created_user字段不会自动处理,需要后续优化:
from django.contrib import admin from .models import 你的模型类名 admin.site.register(你的模型类名)
2. 自定义Admin类,控制字段显示与编辑权限
创建自定义的Admin类,指定列表页显示字段,同时把created_user设为只读(避免手动修改):
class 你的模型Admin(admin.ModelAdmin): # 列表页展示的字段,把created_user加进去 list_display = ('字段1', '字段2', 'created_user', 'created_at') # 表单页设为只读,禁止手动修改创建者 readonly_fields = ('created_user',) # 注册时关联自定义Admin类 admin.site.register(你的模型类名, 你的模型Admin)
如果不想让created_user出现在表单里,也可以用exclude = ('created_user',)替代readonly_fields。
3. 自动填充created_user为当前登录管理员
重写save_model方法,在新增对象时自动把当前登录的Admin用户赋值给created_user:
class 你的模型Admin(admin.ModelAdmin): list_display = ('字段1', '字段2', 'created_user', 'created_at') readonly_fields = ('created_user',) def save_model(self, request, obj, form, change): # 仅在新增对象时设置创建者(change为False表示新增) if not change: obj.created_user = request.user # 调用父类方法完成保存 super().save_model(request, obj, form, change) admin.site.register(你的模型类名, 你的模型Admin)
4. 可选功能:按创建者过滤列表
如果需要在Admin列表页快速筛选某个用户创建的内容,添加list_filter:
class 你的模型Admin(admin.ModelAdmin): list_display = ('字段1', '字段2', 'created_user', 'created_at') readonly_fields = ('created_user',) # 右侧添加创建者过滤器 list_filter = ('created_user',) def save_model(self, request, obj, form, change): if not change: obj.created_user = request.user super().save_model(request, obj, form, change)
5. 可选功能:限制用户仅查看自己创建的内容
如果要实现普通Admin用户只能看到自己创建的对象,重写get_queryset方法:
class 你的模型Admin(admin.ModelAdmin): list_display = ('字段1', '字段2', 'created_user', 'created_at') readonly_fields = ('created_user',) def save_model(self, request, obj, form, change): if not change: obj.created_user = request.user super().save_model(request, obj, form, change) def get_queryset(self, request): queryset = super().get_queryset(request) # 超级用户可以查看所有内容,普通用户仅看自己创建的 if request.user.is_superuser: return queryset return queryset.filter(created_user=request.user)
内容的提问来源于stack exchange,提问作者Brayan Pieto
相关产品推荐
相关产品推荐

