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

前端之家收集整理的这篇文章主要介绍了python – 使用Django Admin中的UserProfile字段过滤用户列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试使用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文档并搜索自定义管理器”来进一步研究.

猜你在找的Python相关文章