Django Admin Radio按钮

时间:2014-03-19 17:55:37

标签: django python-2.7 django-admin

寻找在Django管理员中使用单选按钮的方法。我想有3或4个硬编码选项供用户选择,我将使用该选项知道如何处理下一个文本字段。选项永远不需要改变。谁能指出我正确的方向?谷歌没有合作这个......

1 个答案:

答案 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中设置值,具体取决于你想要选项做什么。