我希望通过为所选用户设置 user.is_active = False 来禁止用户使用 Django 管理中的操作按钮。
class MyUserAdmin(UserAdmin):
list_display = ('username', 'first_name', 'last_name' , 'email')
readonly_fields = ('first_name' , ('last_name') , ('email') , ('username'))
actions = ['ban_users']
#USER BANNING FUNCTION
def ban_users(self, request, queryset):
user_obj = User.objects.get(username= 'username')
user_obj.update(is_active = False)
user_obj.save()
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
我尝试了几种方法,要么最终禁止包括 super 用户在内的所有用户,要么给出错误:用户匹配查询不存在。
我知道这是一个我正在尝试实现的简单功能,但我们将不胜感激。
请您参考如下方法:
您不需要额外的查询来获取操作方法中的特定用户。使用 queryset 参数通过一个数据库查询更新所有选定的用户:
class MyUserAdmin(UserAdmin):
list_display = ('username', 'first_name', 'last_name' , 'email')
readonly_fields = ('first_name' , ('last_name') , ('email') , ('username'))
actions = ['ban_users']
#USER BANNING FUNCTION
def ban_users(self, request, queryset):
queryset.update(is_active = False)
另请注意update是查询集方法,它不适用于单个实例。
