Django - 带复选框的表单小部件,用于选择不限数量或输入数字的文本框

2 投票
1 回答
766 浏览
提问于 2025-04-16 05:18

我正在用Django制作一个表单。这个表单里有一个数字字段,用来表示某个限制。这个限制有可能是没有的。为了不让用户输入一些奇怪的数字来表示无限制(比如-1),我想用一个单选按钮,让用户选择“无限制”或者输入一个具体的数字。

原来的模型里只有一个可以为空的IntegerField。这里的空值就是用来表示无限制的。我想知道有没有办法把这个字段做成一个表单字段,包含这个单选按钮的功能。

我知道我可以自己手动写HTML,但我在想有没有现成的Django字段或小部件可以实现这个功能。

1 个回答

1

你可以给表单添加一个额外的复选框字段,然后重写它的保存方法,以便相应地填充模型字段。或者,你可以制作一个自定义的表单字段小部件,这个小部件可以同时包含多个HTML输入字段,并根据输入生成相应的Python值,反之亦然。第一种方法比较简单,适合只在一个表单中需要这种功能的情况。不管怎样,我建议不要用空值来表示除了没有输入以外的任何意思。你可以让整数字段用-1来表示无限制,这样其他用户指定的值只能是正数。或者再添加一个布尔模型字段来保存这个复选框的值。

撰写回答