如何在管理员中为某个模型设置多个查询集
问题描述:
假设我有一个销售模型,用于跟踪销售情况,并使用sold_on
字段。我想在管理员中看到两个视图,一个显示所有销售情况,一个显示上周的销售情况。如何在管理员中为某个模型设置多个查询集
我不能重写ModelAdmin.queryset,因为我想在不同的时间看到两个Querysets。做这个的最好方式是什么。去这个
答
一种方法是:(1)声明proxy model为Sale
(2)添加自定义ModelAdmin
此代理和(3)限制该自定义管理员的queryset
返回单从上周的销售。事情是这样的:
# models.py
class LastWeekSales(Sale):
class Meta:
proxy = True
verbose_name_plural = "Sales from last week"
# admin.py
class ProxySaleAdmin(SaleAdmin):
def queryset(self, request):
return self.model.objects.filter(**conditions)
admin.site.register(LastWeekSales, ProxySaleAdmin)
这样,你会看到你的管理页面的新项目Sales from last week
仅列出了上周的销售。