Cambiar el QuerySet de un ForeingKey de un modelo en Django

Es posible declarar tipos ForeignKey en un modelo de datos de Django, pero puede que necesitemos filtrar los valores de esta relación, para efectuar tal cambio necesitamos recurrir al Form que muestra ese modelo y modificar el método __init__ de la siguiente manera:

1
2
3
4
class MyModelForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)
        self.fields["myFKField"].queryset = MyModel.objects.all()

Esto permite cambiar los datos que son mostrados por el campo en el Form por unos filtrados que nosotros queramos, existe tambien la posibilidad de trabajar con limit_choices_to de ForeignKey pero esta solución me funciono de inmediato.

Tags: , ,

Trackbacks / Pingbacks

  1. Tweets that mention Cambiar el QuerySet de un ForeingKey de un modelo en Django | AxiaCore -- Topsy.com - 29 enero, 2011

    [...] This post was mentioned on Twitter by Andrey Antoukh, Andrey Antoukh. Andrey Antoukh said: Cambiar QuerySet en un FormModel dinamicamnente – http://axiacore.com/2009/01/cambiar-el-queryset-de-un-foreingkey-de-un-modelo-en-django/ [...]

Deja una respuesta