使用 django-filter 时在 Django 中向表单添加占位符

Adding placeholder to form in Django when using django-filter

我正在开发一个 Web 应用程序,它使用 django-tables2 显示 html table 并允许使用 django-filter 过滤此 table。 在我的 html 模板中,我可以简单地输入 {% filter.form %},然后我得到了一个完整的表格来过滤我的 table,我认为这非常简单。

但是,我想在平面 html(使用 Bootstrap4)中向此表单添加占位符,如下所示:

<div class="container">
    <form>
        <div class="form-group">
            <label for="email">Email:</label>
            <input type="email" class="form-control" id="email"
             placeholder="ENTER PLACEHOLDER HERE" name="email">
            </div>
       </form>
    </div>

(此处形成的示例:https://www.w3schools.com/bootstrap4/tryit.asp?filename=trybs_form_basic&stacked=h 并进行了编辑)

如何在使用 django-filters 时添加占位符,而我所做的只是将 % filter.form %} 添加到我的模板?

编辑: 我的问题只完成了一半。 @schwobaseggl 给出的答案适用于大多数过滤器。但是,当出现 RangeFilter 和两个字段(一个用于最大值,一个用于最小值)时,如何设置两个 separate 占位符?可以将 same 占位符放入两个字段中,如下所述:

当您定义 Filter 时,通过 widget 构造函数的 attrs kwarg 提供 placeholder 属性:

# ...
from django.forms.widgets import TextInput, ...

class FooFilter(filters.FilterSet):
    bar = filters.CharFilter(..., widget=TextInput(attrs={'placeholder': 'baz'}))
from django.forms.widgets import TextInput

class BikesFilter(django_filters.FilterSet):
    sell_price = django_filters.NumberFilter()
    sell_price__gt = django_filters.NumberFilter(field_name='sell_price', lookup_expr 
    ='gte', label='sell price min', widget=TextInput(attrs={'placeholder': 'min'}))
    sell_price__lt = django_filters.NumberFilter(field_name='sell_price', lookup_expr 
    = 'lte', label='sell price max', widget=TextInput(attrs={'placeholder': 'max'}))

   class Meta:
    model = Bike
    fields = (
               'sell_price'
             )