我正在尝试了解如何在 Django 中为表单字段编写多小部件。我有一个复选框字段,然后是一个 CharField,我想根据复选框字段是否已被选中来启用/禁用 Javascript,所以我试图在两个字段中添加一个"id"。
我知道这需要一个多小部件,但我正在努力了解如何做到这一点。
from django import forms
PRIORITY_CHOICES = [('high', 'High'), ('low', 'Low')]
class UploadForm(forms.Form):
gender_select = forms.BooleanField(label='Even Gender Distribution', required=False, widget=forms.TextInput(attrs={'id':'gender_select'}))
gender_priority = forms.CharField(label='Select Priority', required=False, widget=forms.Select(choices=PRIORITY_CHOICES))
就像"gender_select"字段一样,我需要将以下内容添加到"gender_priority"中:
forms.TextInput(attrs={'id':'gender_priority'})
但据我了解,我只能包含一个小部件。我将如何包含多个?
对于任何寻找答案的人来说,我最终解决了这个问题:
PRIORITY_CHOICES = [('high', 'High'), ('low', 'Low')]
class UploadForm(forms.Form):
gender_select = forms.BooleanField(label='Even Gender Distribution', required=False, widget=forms.CheckboxInput(attrs={'id':'gender_select'}))
gender_priority = forms.ChoiceField(label='Priority', required=False, choices=PRIORITY_CHOICES, widget=forms.Select(attrs={'id':'gender_priority'}), disabled=True)
.js:
document.getElementById('academic_score_select').onchange = function() {
document.getElementById('academic_score_priority').disabled = !this.checked;
};