Django multiwidget for CharField form field



我正在尝试了解如何在 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;

};

最新更新