gpt4 book ai didi

python - Django 管理员,无法通过管理员操作按钮将 user.is_active 设置为 FALSE(禁止)

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:18 24 4
gpt4 key购买 nike

我希望通过为所选用户设置 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是查询集方法,它不适用于单个实例。

关于python - Django 管理员,无法通过管理员操作按钮将 user.is_active 设置为 FALSE(禁止),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49965089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com