Django BooleanField作为单选按钮但在内联表单之间

时间:2015-06-10 23:43:49

标签: django forms radio-button django-admin

在我的项目中,用户可以使用任意数量的联系方式'跟他们。例如,一个用户只能定义移动设备,另一个用户可以拥有移动设备,邮件,Skype和其他用户。应该有可能为每个用户设置一种主要的联系方式,所以我创建了如下模型:

 class Account(AbstractNamedUser):
       ....

 class Contact(models.Model):
       account = models.ForeignKey(Account)
       value = models.CharField(max_length=100)
       is_default = models.BooleanField(default=False)

在管理员后端我使用admin.TabularInline,但不幸的是is_default字段是每个内联表单之间的独立复选框。我想要的是将它们变成单选按钮,当然只有一行'可以是默认的。 我已尝试formfield_overrides,某些ModelAdmin.formwidgets = {'is_default':forms.RadioSelect },但它们仅适用于单一形式的选择字段。

是否有可能在Django中指示字段is_default应该被视为内联表单之间的单选按钮?

1 个答案:

答案 0 :(得分:0)

是的,我个人经常使用它。

将类属性添加到您的 ModelForm 默认字段:

    def __init__(self, *args, **kwargs):
      super(FormClassName, self).__init__(*args, **kwargs)
      self.fields['default'].widget.attrs['class'] = 'default-img'

使用 JS 或 Jquery 进行操作:

    $(document).on("click", '.ElementClass', function () {
    $('.ElementClass').prop('checked', false);
    $(this).prop('checked', true);
});