如何在Django Admin中为Author模型仅展示「Author」组的用户
要实现这个需求,直接在项目的admin.py里自定义Author模型的Admin类,重写外键字段的查询过滤逻辑就行,具体步骤如下:
- 导入所需模块
在admin.py顶部导入相关模型和类:
from django.contrib import admin from .models import Author from .models import CustomUser # 假设你的CustomUser在当前app的models文件中 from django.contrib.auth.models import Group
- 自定义AuthorAdmin类并过滤用户
重写formfield_for_foreignkey方法,针对user字段筛选出属于「Author」组的用户:
class AuthorAdmin(admin.ModelAdmin): def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "user": # 获取已创建的「Author」分组 author_group = Group.objects.get(name="Author") # 过滤出该组下的所有用户 kwargs["queryset"] = CustomUser.objects.filter(groups=author_group) return super().formfield_for_foreignkey(db_field, request, **kwargs)
- 注册Author模型与自定义Admin类
把Author模型和自定义的Admin类绑定注册:
admin.site.register(Author, AuthorAdmin)
配置完成后,在Django Admin中新增或编辑Author时,user下拉框里就只会显示属于「Author」组的用户了。
内容的提问来源于stack exchange,提问作者Celsea Mega
相关产品推荐
相关产品推荐

