在下拉列表中按外键过滤

时间:2014-10-20 07:40:14

标签: python django filter django-filter

我正在使用django-filters

我的汽车型号有制造商外键。我想要做的是通过数据库中所有制造商填充的下拉列表来过滤汽车。

class Car(models.Model):
    slug = models.SlugField(unique=True)
    name = models.CharField(max_length=256)
    cost = models.DecimalField(max_digits=10,decimal_places=5)
    manufacturer = models.ForeignKey(Manufacturer)

我的过滤器目前是一个空白文本字段,您可以输入制造商名称,然后提交以这种方式过滤。 Dropdown会更合适,但我找不到办法做到这一点。这是现在的过滤器模型:

class CarFilter(django_filters.FilterSet):
    manufacturer = django_filters.CharFilter(name="manufacturer__name")
    class Meta:
        model = Car
        fields = ['name', 'manufacturer']

1 个答案:

答案 0 :(得分:1)

根本不要在所有中定义制造商过滤器字段,而django-filter将使用此字段的默认过滤器(这是一个下拉列表)。所以这样的事情应该有效:

class CarFilter(django_filters.FilterSet):
    class Meta:
        model = Car
        fields = ['name', 'manufacturer']