我希望通过为所选用户设置 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)
我尝试了一些方法,它最终禁止包括超级用户在内的所有用户或提供错误: 用户匹配查询不存在。 < / p>
我想知道这是一个我想要实现的简单功能,但任何帮助都会受到赞赏。
答案 0 :(得分:1)
您不需要其他查询来获取操作方法中的特定用户。使用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
是查询集方法,并且它不适用于单个实例。