es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Select2 más filtro en Django

Tengo este código a continuación, donde estoy utilizando Select2 en mi componente select, funciona bien, mientras lo escribo, se ve bien, pero ya he buscado en internet ejemplos de cómo personalizar el conjunto de consultas que se ejecuta en el widget, ¿alguna ayuda?

Select2 funciona muy bien.

Clase ConsumidorWidget (s2forms.ModelSelect2Widget):
Los campos de búsqueda son:
“nombre__icontains”,
“email__icontains”,

Clase ConsumoForm (forms.ModelForm):
Meta:
Modelo = Consumo
Campos = (‘id’, ‘consumidor’, ‘mesconsumo’, ‘anoconsumo’, ‘valorapagar’, ‘valorhidrometro’,
‘dataleitura’, ‘datamissao’, ‘datavencimento’, ‘foipago’,)
exclude = (‘bairro’,)
Mesconsumo = forms.ChoiceField()

Widgets = {
    "consumidor": ConsumidorWidget,
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para personalizar el conjunto de consultas utilizado en el widget Select2, puede anular el método queryset en la clase ModelSelect2Mixin, que extiende el widget ModelSelect2Widget. Aquí hay un ejemplo:

    from django_select2.forms import ModelSelect2Mixin, ModelSelect2Widget
    
    class CustomModelSelect2Mixin(ModelSelect2Mixin):
        def get_queryset(self):
            # personalice su consulta aquí
            qs = super().get_queryset()
            return qs.filter(active=True)
    
    class CustomModelSelect2Widget(CustomModelSelect2Mixin, ModelSelect2Widget):
        pass
    

    Luego, en su formulario, use el CustomModelSelect2Widget con el campo consumidor:

    class ConsumoForm(forms.ModelForm):
        consumidor = forms.ModelChoiceField(queryset=Consumidor.objects.all(), widget=CustomModelSelect2Widget)
    

    Esto utilizará su conjunto de consultas personalizado en el campo de selección de ConsumidorWidget.

Comments are closed.