django admin - 在具有中间表的多对多字段上使用水平过滤器

se7*_*7en 3 django django-admin

是否可以filter_horizontal用于ManyToManyField具有中间表的字段,例如没有中间表的字段?

例如:

class A(models.Model):
    f1 = models.ManyToManyField(B)
    f2 = models.ManyToManyField(C, through='T')

class B(models.Model):
    pass

class C(models.Model):
    pass

class T(models.Model):
    a = models.ForeignKey(A)
    c = models.ForeignKey(C)

class AAdmin(admin.ModelAdmin):
    filter_horizontal = ('f1', 'f2', )
Run Code Online (Sandbox Code Playgroud)

Ala*_*air 5

当您有一个带有中间表的多对多字段时,无法显示常规、水平过滤器或垂直过滤器小部件。这样做的原因是中间表可能有无法在这些小部件中显示的额外字段。

可以将相关模型显示为内联。有关更多信息,请参阅有关使用多对多中间模型的文档。