您可以在管理站点上注册两次该模型
ModelAdmin
为它上课。您可以覆盖
queryset()
方法
模型管理员
自定义显示哪些实例。请注意,您需要定义一个模型代理,并在第二个示例中使用它
模型管理员
models.py
class ExampleModel(models.Model):
expired = models.DateField()
class ExpiredExampleModelProxy(ExampleModel):
class Meta:
proxy = True
verbose_name = 'Expired Example'
verbose_name_plural = 'Expired Examples'
class NotExpiredExampleAdmin(models.ModelAdmin):
def queryset(self, request):
return (super(ExampleAdmin, self).queryset(request)
.filter(expiration__gte=date.today()))
class ExpiredExampleAdmin(models.ModelAdmin):
def queryset(self, request):
return (super(ExampleAdmin, self).queryset(request)
.filter(expiration__lt=date.today()))
admin.site.register(ExampleModel, NotExpiredExampleAdmin)
admin.site.register(ExpiredExampleModelProxy, ExpiredExampleAdmin)
而不是定制
ModelAdmin.queryset
您还可以为模型定义自定义管理器,以便在管理外部获得相同的筛选。
另见