加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用Django Admin中的UserProfile字段过滤用户列表

发布时间:2020-12-17 00:51:30 所属栏目:Python 来源:网络整理
导读:我正在尝试使用UserProfile字段过滤Django中的用户列表我需要实现一个队列系统,其中新用户被放入队列,直到管理员批准它们. 我只是在我的UserProfile模型中添加了一个is_in_queue布尔字段但是,当我在管理区域中显示用户列表时,我意识到你不能使用Model的外键

我正在尝试使用UserProfile字段过滤Django中的用户列表…我需要实现一个队列系统,其中新用户被放入队列,直到管理员批准它们.

我只是在我的UserProfile模型中添加了一个is_in_queue布尔字段…但是,当我在管理区域中显示用户列表时,我意识到你不能使用Model的外键字段过滤列表(在这种情况下,是一个字段)用户资料)

显然,list_display项目可以是callables但list_filter不能,所以我可以列出用户在队列中没有问题的IF,但管理员必须滚动整个用户列表以找出队列中的哪些是没有意义……只过滤队列中的用户(使用userprofile.in_queue)会更加实用……

最后,我考虑将自定义视图添加到我的管理区域,该视图仅列出队列中的用户,但该自定义视图未显示在“管理区域索引”页面上,并且仅为新的过滤组合了一个全新的AdminSite选项似乎有点过头了……

所以基本上总结一下:我可以根据a过滤我的用户列表
UserProfile字段?如果没有,我可以添加可访问的自定义视图
从头版开始,无需创建全新的
AdminSite只针对那个?

最佳答案
您可能需要查看为模型的admin_objects使用自定义管理器.

class UserAdminManager(models.AdminManager):
"""
Custom manager for the User model.
"""
def get_query_set(self):
    """
    Overwrites the get_query_set to only return Users in the queue.
    """
    return super(UserAdminManager,self).get_query_set().filter(userprofile__queue=True)

通过覆盖get_query_set方法,您可以过滤结果.然后将其分配给User模型的admin_objects属性.

admin_objects = UserAdminManager()

我的示例中的一些属性名称可能是错误的,因为我不知道您的模型设置,但希望您能得到这个想法.

您可以通过查看django文档并搜索“自定义管理器”来进一步研究.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读