在 django-filter 表单上添加标签或修改小部件
Add label or modifying widget on django-filter form
我正在寻找一种方法来指定过滤器表单中 select 字段的用途,这就是现在的样子:
很难理解 select 输入的用途,理想情况是更改默认选项(“Unkown”和“--------”),但它应该是为每个人定制。已经试过了,但找不到办法,有可能吗?
如果有人知道这样做的方法那就太好了。
添加标签应该是比较简单的方法,但是不知道怎么做。
filters.py
class PatientFilter(django_filters.FilterSet):
class Meta:
model = Patient
fields = {
'dni': ['exact'],
'first_name': ['icontains'],
'last_name': ['icontains'],
'risk': ['exact'],
'status': ['exact'],
'ubication': ['exact'],
'supervisor': ['exact'],
}
HTML
{% if filter %}
<form action="" method="get" class="form form-inline">
{% bootstrap_form filter.form layout='inline' field_class="mr-3 mt-3" %}
<div class="mt-3">
{% bootstrap_button 'Filter' button_class="btn-secondary" %}
<a href="{% url 'patients' %}" class="ml-3 btn btn-secondary">Clear</a>
</div>
</form>
{% endif %}
select输入是外键,这里是models.py
中的定义
status = models.CharField(max_length=15, choices=STATUS_CHOICES)
ubication = models.ForeignKey(Ubication, on_delete=models.CASCADE)
supervisor = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
我正在使用带有 django-filters 的 tables2。
您可以将 empty_label
添加到您的 ModelChoiceFilter
中。
class PatientFilter(django_filters.FilterSet):
ubication = django_filters.ModelChoiceFilter(
queryset=Ubication.object.all(),
empty_label="Placeholder",
)
class Meta:
model = Patient
fields = {
'dni': ['exact'],
'first_name': ['icontains'],
'last_name': ['icontains'],
'risk': ['exact'],
'status': ['exact'],
'ubication': ['exact'],
'supervisor': ['exact'],
}
编辑:
要将 placeholder
添加到 CharField
s 你可以试试这个:
from django.forms.widgets import TextInput
class FooFilter(filters.FilterSet):
bar = filters.CharFilter(..., widget=TextInput(attrs={'placeholder': 'baz'}))
我正在寻找一种方法来指定过滤器表单中 select 字段的用途,这就是现在的样子:
很难理解 select 输入的用途,理想情况是更改默认选项(“Unkown”和“--------”),但它应该是为每个人定制。已经试过了,但找不到办法,有可能吗? 如果有人知道这样做的方法那就太好了。
添加标签应该是比较简单的方法,但是不知道怎么做。
filters.py
class PatientFilter(django_filters.FilterSet):
class Meta:
model = Patient
fields = {
'dni': ['exact'],
'first_name': ['icontains'],
'last_name': ['icontains'],
'risk': ['exact'],
'status': ['exact'],
'ubication': ['exact'],
'supervisor': ['exact'],
}
HTML
{% if filter %}
<form action="" method="get" class="form form-inline">
{% bootstrap_form filter.form layout='inline' field_class="mr-3 mt-3" %}
<div class="mt-3">
{% bootstrap_button 'Filter' button_class="btn-secondary" %}
<a href="{% url 'patients' %}" class="ml-3 btn btn-secondary">Clear</a>
</div>
</form>
{% endif %}
select输入是外键,这里是models.py
中的定义status = models.CharField(max_length=15, choices=STATUS_CHOICES)
ubication = models.ForeignKey(Ubication, on_delete=models.CASCADE)
supervisor = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
我正在使用带有 django-filters 的 tables2。
您可以将 empty_label
添加到您的 ModelChoiceFilter
中。
class PatientFilter(django_filters.FilterSet):
ubication = django_filters.ModelChoiceFilter(
queryset=Ubication.object.all(),
empty_label="Placeholder",
)
class Meta:
model = Patient
fields = {
'dni': ['exact'],
'first_name': ['icontains'],
'last_name': ['icontains'],
'risk': ['exact'],
'status': ['exact'],
'ubication': ['exact'],
'supervisor': ['exact'],
}
编辑:
要将 placeholder
添加到 CharField
s 你可以试试这个:
from django.forms.widgets import TextInput
class FooFilter(filters.FilterSet):
bar = filters.CharFilter(..., widget=TextInput(attrs={'placeholder': 'baz'}))