list_filter 以选项作为值

list_filter with choices as values

我有一个带有布尔字段的 Billing 模型

class Billing(models.Model):
    ...
    is_paid = models.BooleanField(verbose_name='Statut', default=False, choices=[(True, 'Payée'), ('False', 'Non payée')])
    ...

我是 Django 管理员

class BillingAdmin(BaseOnlyModelAdmin):
    ...
    list_display = ['month', 'year', 'date', 'is_paid']
    list_filter = ['is_paid']
    ...

is_paid在列表

时正确显示为Payée / Non payée

但是对于 list_filter 它被翻译成 Oui / Non

我怎样才能改变这种行为?我想让它显示 choices,所以它看起来像这样

我能够通过实施自定义列表过滤器来解决

from django.contrib.admin import SimpleListFilter

class BillingStatusFilter(SimpleListFilter):
    title = 'Statut'
    parameter_name = 'is_paid'

    def queryset(self, request, queryset):
        if self.value():
            return queryset.filter(is_paid__exact=self.value())
    
    def lookups(self, request, model_admin):
        return model_admin.model.STATUS
list_filter = [BillingStatusFilter]