如何告诉我的ModelAdmin过滤器默认不显示所有记录?

时间:2011-07-28 11:18:47

标签: python django

我在django管理页面中添加了一个过滤器下拉列表。

class MyAdmin(admin.ModelAdmin):
    list_filter = ('status',)

默认情况下,如果您在管理视图中转到模型,则默认显示所有记录。 但我希望它过滤:

status="open"

并默认显示。这可以实现吗?

2 个答案:

答案 0 :(得分:0)

我认为你需要的是ModelAdmin.ordering https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.ordering

如果您只需要status ='open',您可以为modeladmin定义自定义默认查询集 https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.queryset 并限制你的 将项目列为status ='open'。 (注意)但是在这种情况下,管理员将无法访问其他记录(状态!='打开')。

答案 1 :(得分:-1)

如果我理解正确,您可以在模型中重新定义默认模型管理器

    class myManager(models.Manager):
         return self.filter(status = 'open')

    class myModel(models.Model):
         ...
         objects = myManager()

但我认为有一种更优雅的方式。