Python 管理中反向相关字段上的django筛选器

Python 管理中反向相关字段上的django筛选器,python,django,django-admin,Python,Django,Django Admin,我有以下模型: class Supplier(models.Model): unique_id = models.IntegerField(unique=True) name = models.CharField(max_length=255, unique=True) address = models.CharField(max_length=255, blank=True, null=True) email = models.EmailField(blank=

我有以下模型:

class Supplier(models.Model):
    unique_id = models.IntegerField(unique=True)
    name = models.CharField(max_length=255, unique=True)
    address = models.CharField(max_length=255, blank=True, null=True)
    email = models.EmailField(blank=True, null=True)
    telephone = models.CharField(max_length=15, blank=True, null=True)

class PaymentMethod(models.Model):
    unique_id = models.CharField(max_length=3)
    supplier = models.ForeignKey(Supplier, null=True)
    last_updated = models.DateTimeField(auto_now=True)
我正在尝试为供应商的付款方式添加过滤器:

@admin.register(Supplier)
class SupplierAdmin(admin.ModelAdmin):
    list_display = ('unique_id', 'name', 'last_updated')
    ordering = ('unique_id',)
    list_filter = ('payment_method__unique_id')
    inlines = [PaymentMethodInline, ]
但是,由于出现以下错误,我似乎没有正确指定列表过滤器:

<class 'etariff.admin.SupplierAdmin'>: (admin.E116) The value of 'list_filter[1]' refers to 'payment_method__unique_id', which does not refer to a Field.
:(admin.E116)“列表过滤器[1]”的值指的是“付款方法唯一id”,而不是指字段。

要使用相关的付款方式,您可以

list_filter = ('paymentmethod',)
请注意,没有下划线,请记住后面的逗号,使其成为元组


如果您想显示相关支付方法的唯一ID,那么我认为您必须编写自己的
ListFilter
类。请参见示例。

尝试将
付款方法\u唯一\u id
替换为仅筛选供应商唯一\u id而非付款方法的
唯一\u id
,然后
供应商
应具有指向
付款方法的字段(FK)
您是否编写了自定义
列表过滤器
,或者是
列表过滤器=('paymentmethod',)
对你来说足够好吗?