Modele de procuration speciale

Bien qu`il semble approprié d`effectuer des opérations de tri et de filtrage en tant que fonctions internes des vues, cette approche ne permet pas à plusieurs vues de partager les résultats de ces opérations potentiellement coûteuses. L`approche alternative, impliquant le tri dans le modèle lui-même, conduit au problème similaire où chaque vue doit afficher des éléments de données qui sont organisés en fonction de l`opération de traitement la plus récente. Si vous avez un endroit qui est également un restaurant, vous pouvez obtenir de l`objet place à l`objet restaurant à l`aide de la version inférieure du nom du modèle: les modèles proxy peuvent être insérés entre un modèle existant et n`importe quel nombre de vues. Qt est fourni avec un modèle de proxy standard, QSortFilterProxyModel, qui est généralement instancié et utilisé directement, mais peut également être sous-classé pour fournir un filtrage et un comportement de tri personnalisés. La classe QSortFilterProxyModel peut être utilisée de la manière suivante: vous pouvez également utiliser un modèle proxy pour définir un classement par défaut différent sur un modèle. Vous ne souhaiterez peut-être pas toujours commander le modèle person, mais ordonner régulièrement par l`attribut last_name lorsque vous utilisez le proxy. C`est facile: vous pouvez créer des modèles distincts pour chacun de ces avec une table de base de données distincte pour chacun, mais avons-nous vraiment besoin d`une table distincte pour chacun de ces? Ce n`est pas nécessaire et il va rendre agrégeant ces histoires beaucoup plus difficile si nous voulons utiliser l`ORM. Pourquoi? Vous ne pouvez pas simplement créer une relation entre une personne et un groupe-vous devez spécifier tous les détails pour la relation requise par le modèle d`appartenance. Les appels d`ajout, de création et d`assignation simples ne fournissent pas un moyen de spécifier ce détail supplémentaire. Par conséquent, ils sont désactivés pour les relations plusieurs-à-plusieurs qui utilisent un modèle intermédiaire.

La seule façon de créer ce type de relation est de créer des instances du modèle intermédiaire. Un modèle de proxy ne pas obtenir sa propre table de base de données. Au lieu de cela, il fonctionne sur la table d`origine. Le cas d`utilisation pour les modèles de proxy, j`ai trouvé, est l`exception plutôt que la règle. La clé ici est que nos modèles, nos modèles finaux qui sont, sont tous assez étroitement liés. Les attributs de contenu ne diffèrent pas tant que ça. Si vos modèles diffèrent grandement et que vous n`avez pas besoin d`agrégation simple, ignorez les modèles de proxy.

Voltar ao Topo