【发布时间】:2015-02-02 17:48:33
【问题描述】:
我有一个带有 ModelChoiceField 的 ModelForm,我需要确保初始值应该保持不变,并且我们不能选择任何其他值。这意味着,使该字段不可编辑、保留或类似。我认为,将其设置为 CharField 或仅使用 Field 将无济于事,因为稍后我需要该字段中的对象进行验证和处理。 有人可以帮忙吗?
self.fields['field_name'].widget.attrs['readonly'] = True
【问题讨论】:
-
请显示您的 ModelForm 的代码并描述您看到的行为以及您期望看到的内容。
-
显示一些代码...但是根据您的信息,我唯一可以假设的是您必须在模板上而不是在您的 models.py 上进行这种设置,您可以看到这已经在这里回答..看看它是否适合你stackoverflow.com/questions/2933478/…
-
如果您只打算使用默认值,为什么还要显示该字段?您无需 POST 即可在 Python 代码中使用该值,您只需从模型中访问它即可。
-
不完全确定你想要实现什么,但你可以在你的模型中使用 fields.editable 属性。 `myField = models.CharField(editable=False)` 或者在modelForm中只排除像`class Meta: model = myModel exclude = ('myField')`这样的字段
-
嗯,关键是在某些情况下,根据用户的数据,我们需要禁止他/她在该字段中选择值,在某些情况下我们必须允许这样做。谢谢大家,问题解决了。该解决方案基于来自@eddwinpaz 评论的信息。
标签: python django django-forms