我的一个模型有一个 deleted 标志,用于全局隐藏对象:
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 管理模块使用的默认查询集以包含已删除的对话?
最佳答案
您可以 override get_queryset
模型管理类中的方法。
class MyModelAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super().get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(author=request.user)
注意在 Django<=1.5 中该方法被命名为 queryset
。
关于django - 覆盖 Django 管理中的默认查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354099/