Como limitar as opções de um campo filho com base no valor de um campo pai?

Eu tenho várias formas bastante complexas que dependem de hierarquias de modelos para atribuirForeignKey valores. Preciso limitar as opções disponíveis para um campo filho com base no valor do campo pai. O problema é que o valor de um campo pai pode vir de dados iniciais (uma solicitação GET)ou de dados vinculados (uma solicitação POST). Assim, acabo replicando muito esse padrão:

class MyForm(forms.Form):
    parent = forms.ModelChoiceField(queryset=Parent.objects.all())
    child = forms.ModelChoiceField(queryset=Child.objects.all())

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)

        # Limit 'child' choices based on current value of 'parent'
        if self.is_bound and self.data.get('parent'):
            self.fields['child'].queryset = Child.objects.filter(parent__pk=self.data['parent'])
        elif self.initial.get('parent'):
            self.fields['child'].queryset = Child.objects.filter(parent=self.initial['parent'])
        else:
            self.fields['child'].choices = []

Sinto que há uma maneira mais eficiente de conseguir isso. o que estou perdendo?

questionAnswers(3)

yourAnswerToTheQuestion