Python 在Django admin中禁用选项列表,仅用于编辑
我想在编辑对象时禁用某些字段。我已经设法为文本字段这样做了,但对于下拉列表(选择列表)来说是不可能的 我在表单的构造函数中执行此操作Python 在Django admin中禁用选项列表,仅用于编辑,python,django,django-forms,django-1.8,Python,Django,Django Forms,Django 1.8,我想在编辑对象时禁用某些字段。我已经设法为文本字段这样做了,但对于下拉列表(选择列表)来说是不可能的 我在表单的构造函数中执行此操作 class OrderModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(forms.ModelForm, self).__init__(*args, **kwargs) instance = getattr(self, 'instan
class OrderModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(forms.ModelForm, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
if instance and instance.pk:
self.fields['description'].widget.attrs['readonly'] = True
self.fields['city_code'].widget.attrs['disabled'] = True
请注意,我是如何使用不同的关键字为这两个字段设置的,但我不能为我的
客户id
字段设置该属性。将属性设置为禁用的或只读的只会影响小部件的显示方式。它实际上并不会阻止某人提交更改这些字段的post请求
这可能是一种更好的覆盖模型的方法
class OrderModelAdmin(admin.Model
def get_readonly_fields(self, request, obj=None):
if self.obj.pk:
return ['description', 'city_code', 'customer']
else:
return []
将属性设置为disabled
或readonly
只会影响小部件的显示方式。它实际上并不会阻止某人提交更改这些字段的post请求
这可能是一种更好的覆盖模型的方法
class OrderModelAdmin(admin.Model
def get_readonly_fields(self, request, obj=None):
if self.obj.pk:
return ['description', 'city_code', 'customer']
else:
return []
@Alasdair的答案比这个好(因为这个不会阻止提交)。但我发布了它,以防万一有人想要modelcooicefield
的“只读”功能
self.fields['customer_id'].widget.widget.attrs['disabled'] = 'disabled'
请注意,对于选项,字段的内容如下:
self.fields['city_code'].widget.attrs['disabled'] = True
@Alasdair的答案比这个好(因为这个不会阻止提交)。但我发布了它,以防万一有人想要modelcooicefield
的“只读”功能
self.fields['customer_id'].widget.widget.attrs['disabled'] = 'disabled'
请注意,对于选项,字段的内容如下:
self.fields['city_code'].widget.attrs['disabled'] = True
哇!很好的解决方案。谢谢快问,你知道为什么我要在表单中复制我的只读字段吗?我不确定是什么导致字段被复制。哇!很好的解决方案。谢谢快问,你知道为什么我要在表单中复制我的只读字段吗?我不确定是什么导致字段被复制。