覆盖Django管理员中的默认查询 [英] Override default queryset in Django admin
本文介绍了覆盖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屋!
查看全文