将Django单选输入改为使用Bootstrap开关的切换按钮

0 投票
1 回答
5340 浏览
提问于 2025-04-18 17:50

models.py

class Listener(models.Model):
    # other columns
    availability = models.BooleanField(default=False)

最开始我打算创建一个 AvailabilityForm 对象,并把输入设置为单选按钮(RadioSelect)。但是我想把单选按钮的样子改成一个切换开关(toggle switch)。我在考虑使用 这个链接 上的工具,但我不太确定怎么在 Django 模板中使用它。所以我有几个问题: 1) 我可以扩展基本的 Django 小部件(widgets)来实现我想要的效果(切换开关)吗?还是说直接写 HTML 用 request.GET 获取输入会更简单? 2) 我希望根据数据库中的值,默认选中一个选项(如果用复选框的话就是默认勾选)。我该怎么做呢?(我对我的 JavaScript 技能不太自信)

谢谢大家的帮助!

1 个回答

0

如果我查看这个网站 http://www.bootstrap-switch.org/,我看到以下内容:

<link href="bootstrap.css" rel="stylesheet">
<link href="bootstrap-switch.css" rel="stylesheet">
<script src="jquery.js"></script>
<script src="bootstrap-switch.js"></script>

这里有一些小的JavaScript和CSS代码,你需要把它们放到你的模板里。不过我不太推荐他们的设置方式,建议把JavaScript文件放到页面的底部。

关于复选框:

<input type="checkbox" name="my-checkbox" checked>

其实没什么特别的,你的复选框可以是:

class ListenerForm(forms.ModelForm):
    # other columns
    availability = forms.CheckboxInput()  # Or any other type of checkbox field

在你的模板中用 {{ form.as_p }} 来渲染它。

最后但同样重要的是:

$("[name='my-checkbox']").bootstrapSwitch();

对于你想要显示为Bootstrap Switch的复选框。

撰写回答