Django根据条件设置内联只读字段

2024-04-26 18:18:17 发布

您现在位置:Python中文网/ 问答频道 /正文

寻找这样的东西:

for field in inlinemodel:
    if field.obj.rm.id == '1':
        readonly.append(field.note)

型号为:

^{pr2}$

如您所知,所有字段都有类似的名称rm和{},在浏览器中看起来像note_set-1-note。在


Tags: rmin名称idobjfieldforif
1条回答
网友
1楼 · 发布于 2024-04-26 18:18:17

据我所知,您试图将djangomodelformnot a model字段设置为readonly/disabled,具体取决于if(condition is true){ dothis(); }

第1步。在

首先必须通过子类化创建一个新的FormField类django.forms.Field。在

然后必须在重写的表单字段类中创建clean()函数,并向其添加条件语句。参见下面的示例

from django import forms.Field 
class MyCustomFormField(forms.Field):
      clean(self):
          if self.instance.is_disabled
               return self.instance.field
          else:
               return self.cleaned_data.get('field')

第二步。在

然后在窗体中所有字段的循环中,当您有if语句时,只需添加以下内容 modelform.fields['field_1'].widget.attrs['readonly'] = True使字段禁用

`

相关问题 更多 >