有这个disabled属性。但是我不能将它应用于模型表单字段。我不知道该怎么做。我可以很容易地将它添加到forms.Form中。但由于我使用的是窗口小部件,所以我不知道在哪里插入它。
https://docs.djangoproject.com/en/2.0/ref/forms/fields/#disabled
class TestForm(forms.ModelForm):
class Meta:
model = Test
fields = ['date']
widgets = {'date': forms.TextInput(attrs={'readonly': 'readonly'})}发布于 2019-03-06 20:26:37
当我想在创建时禁用某些字段时,我遇到了这样的情况。以及编辑时禁用的某些字段。
我的环境: 3,Django 2.1
My Form:
class AddInvoiceForm(forms.ModelForm):
disabled_fields = ['inv_type', 'report', 'subsidiary']
class Meta:
model = models.Invoice
fields = ('inv_type', 'report', 'subsidiary', 'rate_card', 'reviewed')
def __init__(self, *args, **kwargs):
super(AddInvoiceForm, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
if instance and instance.pk:
for field in self.disabled_fields:
self.fields[field].disabled = True
else:
self.fields['reviewed'].disabled = True发布于 2018-05-12 08:02:45
假设您的date字段为forms.DateField,并且您想要使用TextInput小部件,请尝试执行以下操作:
class TestForm(forms.ModelForm):
date = forms.DateField(widget=forms.TextInput, disabled=True)
class Meta:
model = Test
fields = ['date']这将覆盖从您的Test模型定义创建的默认字段定义。
禁用的布尔参数当设置为True时,将使用禁用的HTML属性禁用表单域,以便用户无法对其进行编辑。即使用户篡改了提交给服务器的字段的值,它也会被忽略,取而代之的是表单初始数据中的值。
从上面的SO帖子中提取的关键注意事项是:
readonly元素是不可编辑的,但会在相应的form提交时发送。disabled元素是不可编辑的,并且不会在提交时发送。
从上面的引用来看,设置disabled=True就足够了,所以你不需要在你的小部件上设置readonly属性。
发布于 2018-05-12 00:22:26
class TestForm(forms.ModelForm):
date = forms.CharField(disabled=True)
class Meta:
model = Test
fields = ['date']
widgets = {
'date': forms.TextInput(attrs={'readonly': 'readonly'}),
}https://stackoverflow.com/questions/50296374
复制相似问题