如何为 DateFromToRangeFilter 设置不同的占位符?
How to set different placeholders for DateFromToRangeFilter?
我在我的项目中使用 django_filters,其中之一是 DateFromToRangeFilter。此过滤器在您的模板中生成两个输入字段,比喻为 - 'From' 和 'To'.
给这些字段设置类似的属性是没有问题的。例如:
end = django_filters.DateFromToRangeFilter(
widget=django_filters.widgets.RangeWidget(
attrs={'placeholder': 'yyyy-mm-dd'}))
但我不明白如何设置不同的占位符(或每个字段的任何其他属性)。像字段 'From' 的 'Enter the start date' 和字段 "To".
的 'Enter the finish date'
有人可以帮忙吗?
默认情况下 MultiWidget
将所有 attrs
传递给每个子窗口小部件。要绕过这一点,您必须继承 RangeWidget
并为每个 from/to
小部件提供单独的 attrs
参数。
类似于以下内容:
class MyRangeWidget(RangeWidget):
def __init__(self, from_attrs=None, to_attrs=None, attrs=None):
super(MyRangeWidget, self).__init__(attrs)
if from_attrs:
self.widgets[0].attrs.update(from_attrs)
if to_attrs:
self.widgets[1].attrs.update(to_attrs)
我在生产中使用下面的代码来获得两个不同的占位符。
import django_filters
from django_filters.widgets import RangeWidget, SuffixedMultiWidget
from jobsboard.models import Job
class DurationRangeWidget(SuffixedMultiWidget, RangeWidget):
suffixes = ['min', 'max']
def __init__(self, attrs=None):
super().__init__(attrs)
self.widgets[0].attrs.update({'placeholder': 'from'})
self.widgets[1].attrs.update({'placeholder': 'to'})
class JobsConsultantFilter(django_filters.FilterSet):
hirer = HirerFilter(name='hirer', max_length=255)
duration = django_filters.RangeFilter(name='duration', widget=DurationRangeWidget)
class Meta:
model = Job
fields = ['duration', 'pay', 'hirer', ]
我在我的项目中使用 django_filters,其中之一是 DateFromToRangeFilter。此过滤器在您的模板中生成两个输入字段,比喻为 - 'From' 和 'To'.
给这些字段设置类似的属性是没有问题的。例如:
end = django_filters.DateFromToRangeFilter(
widget=django_filters.widgets.RangeWidget(
attrs={'placeholder': 'yyyy-mm-dd'}))
但我不明白如何设置不同的占位符(或每个字段的任何其他属性)。像字段 'From' 的 'Enter the start date' 和字段 "To".
的 'Enter the finish date'有人可以帮忙吗?
默认情况下 MultiWidget
将所有 attrs
传递给每个子窗口小部件。要绕过这一点,您必须继承 RangeWidget
并为每个 from/to
小部件提供单独的 attrs
参数。
类似于以下内容:
class MyRangeWidget(RangeWidget):
def __init__(self, from_attrs=None, to_attrs=None, attrs=None):
super(MyRangeWidget, self).__init__(attrs)
if from_attrs:
self.widgets[0].attrs.update(from_attrs)
if to_attrs:
self.widgets[1].attrs.update(to_attrs)
我在生产中使用下面的代码来获得两个不同的占位符。
import django_filters
from django_filters.widgets import RangeWidget, SuffixedMultiWidget
from jobsboard.models import Job
class DurationRangeWidget(SuffixedMultiWidget, RangeWidget):
suffixes = ['min', 'max']
def __init__(self, attrs=None):
super().__init__(attrs)
self.widgets[0].attrs.update({'placeholder': 'from'})
self.widgets[1].attrs.update({'placeholder': 'to'})
class JobsConsultantFilter(django_filters.FilterSet):
hirer = HirerFilter(name='hirer', max_length=255)
duration = django_filters.RangeFilter(name='duration', widget=DurationRangeWidget)
class Meta:
model = Job
fields = ['duration', 'pay', 'hirer', ]