禁用Django表单ChoiceField的所有选项,保留默认选项

0 投票
1 回答
1829 浏览
提问于 2025-04-18 11:07

基本上,我想做的是:

我希望能根据用户的不同,让某些字段变成只读状态。

到目前为止,这个过程很简单,但问题来了,我需要让一些下拉选择框变成只读,但它们和只读状态不太兼容。问题是,用户仍然可以操作这些选择框,尽管新的值不会被提交。我希望这个选择框是禁用的,但如果我这样做,值就不会通过POST发送,这样表单的有效性就会出现问题。

经过一番研究,我明白了,唯一的办法就是禁用所有字段,除了默认选中的那个?

这怎么实现呢?

这是我目前的代码:

def __init__(self, *args, **kwargs):
    self.user = kwargs.pop('user')
    super(TeamForm, self).__init__(*args, **kwargs)
    instance = getattr(self, 'instance', None)

    if instance and instance.pk is None:
        self.fields['division'].initial = 1

    user_role = self.user.memberaccount.get_role()

    if user_role != 'admin':

这是我想要禁用选项的地方……

非常感谢你的帮助,

Ara

1 个回答

0

我看到这里有两个可能的选择:

撰写回答