根据下面的表格,我想知道是否有办法(或插件)使用字段tipo_indicador来过滤indicadores字段:
tipo_indicador = forms.ModelChoiceField(
queryset=TipoIndicador.objects.all(),
label=u'Tipo de indicador',
required=False,
)
indicadores = forms.ModelMultipleChoiceField(
label= _(u'Indicadores'),
required=False,
queryset=Indicador.objects.all(),
widget=admin_widgets.FilteredSelectMultiple(verbose_name=_(u'indicadores'), is_stacked=False)
)
可以使用Django的表单和视图根据tipo_indicador字段过滤indicadores字段。
enter code here class MyForm(forms.Form):
tipo_indicador = forms.ModelChoiceField(
queryset=TipoIndicador.objects.all(),
label=u'Tipo de indicador',
required=False,
)
indicadores = forms.ModelMultipleChoiceField(
label= _(u'Indicadores'),
required=False,
queryset=Indicador.objects.none(), # Empty at first
widget=admin_widgets.FilteredSelectMultiple(verbose_name=_(u'indicadores'), is_stacked=False)
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.data.get('tipo_indicador'):
self.fields['indicadores'].queryset = Indicador.objects.filter(tipo_indicador=self.data.get('tipo_indicador'))
当表单初始化时,它会检查 tipo_indicador 是否有值。如果是,它会根据 tipo_indicador 值过滤指标查询集。
这仅在提交表单后才有效。如果您想在不刷新页面的情况下过滤选项,则需要使用 JavaScript 或 Django 插件,例如 django-select2。