Suite

Limiter les valeurs disponibles dans le champ déroulant du formulaire QGIS en fonction de la valeur sélectionnée dans le champ précédent ?


Je construis un formulaire de saisie assez complexe pour une couche stockée dans une base de données PostGIS. Je suis ce scénario d'utilisation :

À plusieurs reprises, j'ai des champs déroulants qui permettent à l'utilisateur de sélectionner un type d'artefact (rempli par une relation de valeur à une autre table dans une base de données), suivi immédiatement du champ lui permettant de sélectionner un sous-type (également rempli par une relation de valeur à une autre table dans un base de données). Je souhaite qu'un choix de sous-types dans la liste déroulante soit limité par la sélection précédente d'un type.

Par exemple, si le type "céramique" est sélectionné, la liste déroulante des sous-types doit être limitée aux seules options avec une valeur clé de 1 à 10.

Si le type "métaux" est sélectionné, la liste déroulante des sous-types doit être limitée aux seules options avec une valeur clé comprise entre 11 et 20.

Etc.

Je me sens relativement à l'aise avec le générateur d'expressions SQL et qgis, et je suppose que cela pourrait être réalisé via l'option d'expression de filtre sur le widget de relation de valeur, mais je ne saurais pas comment appeler les valeurs d'un formulaire en cours de remplissage.

Je soupçonne qu'un code python est nécessaire? - Je ne parle pas couramment python mais je suppose que je pourrais adapter un exemple de code à mes besoins en renommant les champs etc.

La question est similaire à Field Value Mapping QGIS, mais les réponses ne m'ont pas indiqué les directions que je pourrais appliquer avec mes connaissances actuelles.


Si vous créez une table qui contient toutes les valeurs dont vous avez besoin et que vous ajoutez à votre carte. Créez une relation (Projet>propriétés>relations). Ensuite, lors de la création de votre formulaire dans les propriétés du widget d'édition, sélectionnez la relation de valeur Ici, vous pouvez filtrer ce qui est affiché (c'est-à-dire si x affiche les valeurs où filterField = y)


Obtenez le plugin Form Value Relation. J'ai créé un formulaire intelligent avec des listes déroulantes en cascade avec ce plugin.