2014-03-19 44 views
0

寻找一种在Django管理中使用单选按钮的方法。我希望用户可以选择3或4个硬编码选项,我将使用该选项来知道如何处理下一个文本字段。选项永远不需要改变。任何人都可以将我指向正确的方向吗?谷歌在这一个不合作......Django Admin单选按钮

回答

1

我会假设你想要在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中的值和值,具体取决于您想要的选项。