HBM*_*MCS 2 django django-views django-filter
我正在使用 django_filters。对于布尔字段,它会生成以下 HTML:
<select name="bass" id="id_bass">
<option value="">Unknown</option>
<option value="true" selected="">Yes</option>
<option value="false">No</option>
</select>
Run Code Online (Sandbox Code Playgroud)
这源自Django 自己的 NullFields 细节。我怎样才能将那个丑陋的“未知”更改为其他内容?用户并不是真正在搜索“未知”;他们正在搜索“全部”,因为我的布尔字段是必需的,并且要么是trueor false。
该小部件不接受choices属性。
我自己手动创建 HTML 部分解决了这个问题;尽管如此,我会从 中实现这一点,并且仅在模板上view使用。{{form}}
聚苯乙烯
在模板上执行此操作的最佳方法是在 DOM 加载后运行此 JavaScript:
document.getElementById('id_bass').options[0].innerText = "---------";
Run Code Online (Sandbox Code Playgroud)
有点老套;尽管如此,它还是达到了我想要的效果。
您可以为此创建一个自定义小部件,并可以在您的BooleanFilter()as 中使用它,
from django_filters.widgets import BooleanWidget
from django.utils.translation import gettext as _
class CustomBooleanWidget(BooleanWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.choices = (("", _("Anything else")), ("true", _("Yes")), ("false", _("No")))
class YourFilterSet(filters.FilterSet):
your_field = filters.BooleanFilter(widget=CustomBooleanWidget)
class Meta:
model = YourModelClass
fields = ("your_field",)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1099 次 |
| 最近记录: |