如何在Django中创建一个具有可编辑“其他”选项的选择字段?

11 投票
2 回答
2654 浏览
提问于 2025-04-16 03:33
(
    ('one', 'One'),
    ('two', 'Two'),
    ('other', EDITABLE_HUMAN_READABLE_CHOICE),
)

我想要的是一个选择框,里面有一些常用的选项,但同时也希望能填入一个自定义的、容易理解的值。

这样做可行吗?还是说有更好的方法我没有想到?

2 个回答

3

我用的一个简单解决方案:

  • 使用了标准的模型选择字段
  • 自定义了一个表单,为每个模型选择字段添加了一个普通的输入框
  • 自定义了一个jQuery脚本,只有在选择最后一个选项时才显示这个普通输入框
  • 在视图中,当我收到POST数据时,我解析了这个POST数组并创建了模型
7

一种方法是为管理后台使用一个自定义的 ModelForm。这个表单可以有两个字段,一个是接受一组预定义选项的,另一个是接受任意值的。在 clean() 方法中,你可以确保这两个字段只能选择其中一个。

如果你对界面的外观有特别的要求,比如想要用单选按钮来选择一个预定义的值或者输入一个自定义的值,那么你可能需要自己设计一个自定义字段。

撰写回答