Maison > Article > développement back-end > Comment filtrer les choix de clés étrangères dans un ModelForm Django ?
Dans les modèles Django, une clé étrangère définit une relation entre deux modèles. Cette documentation montre comment filtrer les choix disponibles pour un champ ForeignKey dans un Django ModelForm, en garantissant que seules les options pertinentes sont présentées.
Dans le scénario donné, vous souhaitez créer un formulaire pour ajouter des clients liés à une entreprise spécifique. La base_rate ForeignKey du Client ne doit afficher que les Tarifs associés à la Société en question. Pour y parvenir avec Django 1.0, suivez ces étapes :
form.fields["base_rate"].queryset = Rate.objects.filter(company_id=the_company.id)
Cet ensemble de requêtes garantit que seuls les tarifs liés à la société sélectionnée seront disponibles comme choix dans le form.
La solution publiée pour Django 0.96 est en effet un hack qui contourne la fonctionnalité native des formulaires Django. Il modifie directement l'attribut de choix du champ ForeignKey, ce qui peut conduire à des incohérences et n'est pas recommandé pour le code de production.
La documentation de Django indique clairement que les choix d'un ModelChoiceField sont définis par son attribut queryset. En définissant explicitement cet attribut sur le QuerySet approprié, vous pouvez adapter les choix de clé étrangère au sous-ensemble d'objets souhaité. Cette méthode évite tout piratage et garantit une approche propre et maintenable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!