Как иметь несколько наборов запросов для модели в Admin - PullRequest
1 голос
/ 06 сентября 2010

Скажем, у меня есть модель Sale, которая используется для отслеживания продаж, с полем sold_on.Я хочу иметь два представления в Admin, один, показывающий все продажи и один, показывающий продажи на прошлой неделе.

Я не могу переопределить ModelAdmin.queryset, поскольку хочу видеть оба набора запросов в разное время.Каков наилучший способ сделать это.

1 Ответ

2 голосов
/ 06 сентября 2010

Один из способов сделать это - (1) объявить модель прокси для 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 на своей странице администратора, в котором перечислены только продажи за последнюю неделю.

...