寻找在Django管理员中使用单选按钮的方法。我想有3或4个硬编码选项供用户选择,我将使用该选项知道如何处理下一个文本字段。选项永远不需要改变。谁能指出我正确的方向?谷歌没有合作这个......
答案 0 :(得分:2)
我将假设您想要在Foo模型对象的更改页面上进行此操作。让我们调用额外字段my_option。
首先,您需要在FooAdmin类中使用自定义表单,以便在其中获取额外字段:
class FooAdmin:
...
form FooForm
fields = (..., 'my_option', ...)
...
然后,只需使用额外选项创建表单:
class FooForm(forms.ModelForm):
class Meta:
model = Foo
my_option = ChoiceField(
label = 'Options',
choices = (
(0, 'Don\'t change anything.'),
(1, 'Do some crazy stuff.'),
(2, 'Do other stuff.'),
),
initial = 0,
widget = RadioSelect,
)
ChoiceField默认使用选择框,这就是您还需要在字段的构造函数中覆盖窗口小部件类型的原因。如果能更好地满足您的需求,您还可以查看TypedChoiceField。
最后,你需要在某个地方处理这个领域。我建议覆盖FooForm中的clean()方法来获取值并在self.cleaned_data中设置值,具体取决于你想要选项做什么。