Django管理列表筛选器基于两个字段计算的字段

Django管理列表筛选器基于两个字段计算的字段,django,django-admin,django-admin-filters,Django,Django Admin,Django Admin Filters,我这里展示了一个django模型 class Allocation(models.Model): allocated = models.IntegerField(default=5) used = models.IntegerField(default=0) user = models.ForeignKey(to=User, on_delete=models.CASCADE) 我使用一个计算字段,如下所示 def limit_exceeded(self, obj):

我这里展示了一个django模型

class Allocation(models.Model):
    allocated = models.IntegerField(default=5)
    used = models.IntegerField(default=0)
    user = models.ForeignKey(to=User, on_delete=models.CASCADE)
我使用一个计算字段,如下所示

def limit_exceeded(self, obj):
        return obj.allocated == obj.used

我想在
列表\u过滤器上使用相同的逻辑。但是
SimpleListFilter
只允许一个
参数\u name
,并且无法使用这两个字段来检查条件。我怎样才能做到这一点呢?

像这样的事情可能会奏效

from django.db.models import F


class SomeFilterName(admin.SimpleListFilter):
    title = "any name"
    parameter_name = "any_name"

    def lookups(self, request, model_admin):
        return [("True", True), ("False", False)]

    def queryset(self, request, queryset):
        if self.value() == "True":
            return queryset.filter(allocated=F("used"))
        elif self.value() == "False":
            return queryset.exclude(allocated=F("used"))
        return queryset