Maison > développement back-end > Tutoriel Python > Comment filtrer les choix de clés étrangères dans Django ModelForms en fonction des données de modèle associées ?

Comment filtrer les choix de clés étrangères dans Django ModelForms en fonction des données de modèle associées ?

Linda Hamilton
Libérer: 2024-11-16 16:05:03
original
212 Les gens l'ont consulté

How to Filter ForeignKey Choices in Django ModelForms based on Related Model Data?

Filtrage des choix de clé étrangère dans les formulaires de modèle Django

Lorsque vous travaillez avec des modèles Django qui ont des relations ForeignKey, vous pouvez rencontrer des scénarios dans lesquels vous devez restreindre la choix disponibles pour un domaine particulier en fonction de critères spécifiques. Dans ce cas précis, nous avons un scénario dans lequel nous souhaitons limiter les choix de taux pour un modèle Client à uniquement ceux associés à sa société mère.

Pour réaliser ce filtrage dans Django 1.0, vous pouvez utiliser l'attribut queryset du ModelChoiceField correspondant. Dans votre cas, le champ pertinent est « taux ». En fournissant un QuerySet personnalisé à ce champ, vous pouvez appliquer les critères de filtrage nécessaires :

form.fields["rate"].queryset = Rate.objects.filter(company_id=the_company.id)
Copier après la connexion

Cette modification garantira que lors de la création ou de la modification d'un client, les choix de taux seront limités uniquement à ceux associés au Entreprise à laquelle appartient le Client. En gérant ce filtrage explicitement dans la vue, vous évitez toute complication potentielle pouvant survenir lors de l'utilisation de l'attribut limit_choices_to dans l'interface d'administration.

Cette approche vous permet de maintenir une manière propre et efficace de filtrer les choix ForeignKey dans votre Django ModelForms, offrant une plus grande flexibilité dans les tâches de manipulation de données de votre application.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal