覆盖Django管理员中的默认查询 [英] Override default queryset in Django admin

查看:160
本文介绍了覆盖Django管理员中的默认查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的一个模型有一个删除的标志,用于全局隐藏对象:

One of my models has a deleted flag, which is used to hide objects globally:

class NondeletedManager(models.Manager):
    """Returns only objects which haven't been deleted"""

    def get_query_set(self):
        return super(NondeletedManager, self).get_query_set().exclude(deleted=True)

class Conversation(BaseModel):
    ...
    deleted = models.BooleanField(default=False)
    objects = NondeletedManager()
    all_conversations = models.Manager() # includes deleted conversations

如何覆盖Django管理模块使用的默认查询器包含已删除的会话?

How can I override the default queryset used by Django admin module to include deleted conversations?

推荐答案

您可以覆盖 get_queryset 您的模型管理类中的方法。

You can override get_queryset method in your model admin class.

class MyModelAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super(MyModelAdmin, self).get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(author=request.user)

Django< ; = 1.5该方法被命名为 queryset

Note in Django<=1.5 the method was named just queryset.

这篇关于覆盖Django管理员中的默认查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆