Django:覆盖 SimpleListFilter get_queryset 方法(super(type, obj): obj must be an instance or subtype of type)

时间:2021-06-03 11:17:09

标签: python django django-admin django-admin-filters

我正在尝试为用户制作一个过滤器,以便通过创建的草稿对其进行过滤。我被困在覆盖 get_queryset 中。

这是我得到的错误:

super(type, obj): obj must be an instance or subtype of type

我错过了什么?

class DraftFilter(SimpleListFilter):
    title = _('created drafts')
    parameter_name = 'user_drafts'

    def lookups(self, request, model_admin):
        return(
            ('has_drafts', 'Yes'),
            ('no_drafts', 'No'),
        )

    def queryset(self, request, queryset):

        def get_drafts(status):
            return super().get_queryset(request).annotate(
                has_drafts=Exists(Operation.objects.filter(company_id=OuterRef('pk')))
            ).filter(has_drafts=status)

        if not self.value():
            return queryset

        if self.value().lower() == 'has_drafts':
            return get_drafts(True)

        if self.value().lower() == 'no_drafts':
            return get_drafts(False)

0 个答案:

没有答案