Python django使ModelChoiceField不可编辑

Python django使ModelChoiceField不可编辑,python,django,django-forms,Python,Django,Django Forms,我有一个ModelForm,上面有ModelChoiceField,我需要确保初始值保持不变,并且不能选择任何其他值。这意味着,将此字段设置为不可编辑、保留或类似的smth。我认为,将其设为CharField或just-Field在这里没有帮助,因为我需要稍后从该字段中获取一个对象进行验证和处理。 有人能帮忙吗 self.fields['field_name'].widget.attrs['readonly'] = True 事实证明,我需要以下代码: self.fields['field_

我有一个ModelForm,上面有ModelChoiceField,我需要确保初始值保持不变,并且不能选择任何其他值。这意味着,将此字段设置为不可编辑、保留或类似的smth。我认为,将其设为CharField或just-Field在这里没有帮助,因为我需要稍后从该字段中获取一个对象进行验证和处理。 有人能帮忙吗

 self.fields['field_name'].widget.attrs['readonly'] = True

事实证明,我需要以下代码:

self.fields['field_name'].widget.attrs['disabled'] = 'disabled'

提交表单时,此选项将从表单字段中删除实例

self.fields['field_name'].widget.attrs['disabled'] = 'disabled'

使用此选项,您将禁用要编辑的de字段,并且可以转换要保存到数据库中的init实例

algorithm = forms.ModelChoiceField(label='Algoritmo',queryset=Algorithm.objects.all(),to_field_name="name",widget=forms.TextInput(attrs={'readonly':'readonly'}))

请显示模型表单的代码,并描述您看到的行为和期望看到的行为。显示一些代码。。。但是根据您的信息,我唯一可以假设的是您必须在模板上而不是在模型上进行这种设置。py您可以看到这里已经回答了这个问题。。看看它是否适合您,如果您只打算使用默认值,为什么还要显示该字段?为了能够在Python代码中使用该值,您不需要发布该值,只需从模型中访问它即可。不完全确定您想要实现什么,但您可以在模型中的行中使用fields.editable属性myField=models.CharField(editable=False)`或者在modelForm中只排除类似'class Meta:model=myModel exclude=('myField')`的字段,关键是,在某些情况下,根据用户的数据,我们需要禁止他/她在此字段中选择值,在某些情况下,我们必须允许他/她这样做。谢谢大家,问题解决了。该解决方案基于@eddwinpaz comment中的信息。