Создание динамических полей формы в Django ModelForm
Я хочу найти экземпляр, проверить значение в определенном поле и затем вернуть список для этого поля Meta
, но не похоже, что __init__
может что-то вернуть. Как я могу сделать динамическую форму, которая на основе значения в поле показывает только заранее определенные другие поля
Цель: В конечном итоге, если subgrade_02_weight != None
, то сделать видимыми subgrade_02_title
, subgrade_02_weight
, subgrade_02_1_star
и т.д. У меня более 100 полей, которые нужно сделать видимыми, и я не хочу делать это халтурным способом в шаблоне.
Кажется, что JS - лучший подход, но у меня нет опыта в JS.
class Inspection_ResultForm(forms.ModelForm): #work on this tomorrow
def __init__(self, user, *args, **kwargs):
super( Inspection_ResultForm,self).__init__(*args, **kwargs)
#if user.groups.filter(name='Operations Manager').exists():
fields_list = ["subgrade_00_title", "subgrade_00_weight", "subgrade_00_1_star", "subgrade_00_2_star", "subgrade_00_3_star", "subgrade_00_4_star", "subgrade_00_5_star",
"subgrade_01_title", "subgrade_01_weight", "subgrade_01_1_star", "subgrade_01_2_star", "subgrade_01_3_star", "subgrade_01_4_star", "subgrade_01_5_star"
]
if self.instance.inspection_request.sample.order.specification.subgrade_02_weight != None:
fields_extends = ["subgrade_02_title", "subgrade_02_weight", "subgrade_02_1_start", "subgrade_02_2_star",
"subgrade_02_3_star", "subgrade_02_4_star", "subgrade_02_5_star"]
fields_list.extend(fields_extends)
print(fields_list)
fields = fields_list
return fields
class Meta:
model = Inspection_Result
fields = ('subgrade_00_title', 'subgrade_01_title',) #would like this to be equal to field list calculated in __init__