Modèle de procuration succession

En règle générale, le type de traitement utilisé dans un modèle de proxy implique de mapper chaque élément de données de son emplacement d`origine dans le modèle source à un emplacement différent dans le modèle de proxy. Dans certains modèles, certains éléments peuvent ne pas avoir d`emplacement correspondant dans le modèle de proxy; ces modèles filtrants sont des modèles de proxy. Les vues accèdent aux éléments à l`aide des index de modèle fournis par le modèle proxy, et celles-ci ne contiennent aucune information sur le modèle source ou les emplacements des éléments d`origine dans ce modèle. La classe QSortFilterProxyModel est conçue pour être instanciée et utilisée directement dans les applications. Des modèles de proxy plus spécialisés peuvent être créés en sous-classant ces classes et en implémentant les opérations de comparaison requises. Les modèles de proxy de Django sont l`une de ces caractéristiques que je me souviens de lire et de penser, “Oh, cool… Je suppose “et puis en avangeant. De temps en temps, ils viennent dans très maniable, mais il n`y a pas beaucoup écrit sur la façon de mieux faire usage d`eux un modèle de proxy est juste une autre classe qui fournit une interface différente pour le même modèle de base de données sous-jacent. Il n`y a rien de compliqué sur les modèles de proxy, il ya juste un peu de réflexion nécessaire en ce qui concerne la façon dont ils peuvent résoudre vos problèmes. Pour résoudre ce problème, l`infrastructure de modèle/vue utilise des modèles proxy pour gérer les informations fournies entre les modèles individuels et les vues. Les modèles de proxy sont des composants qui se comportent comme des modèles ordinaires dans la perspective d`une vue et accèdent aux données des modèles sources pour le compte de cette vue. Les signaux et les emplacements utilisés par l`infrastructure de modèle/vue garantissent que chaque vue est mise à jour de manière appropriée, quel que soit le nombre de modèles proxy placés entre lui-même et le modèle source. L`instruction proxy = true dans la section Meta de la classe indique que ces classes sont des modèles proxy.

C`est la classe de Manager que nous utilisons ici pour différencier les classes. Avoir des classes de gestionnaire uniques vous permet de traiter les modèles de proxy en tant que modèles de première classe dans le reste de votre code. Vous pouvez utiliser les gestionnaires pour vous assurer que l`interface du modèle standard est appliquée. Un modèle de proxy est une sous-classe d`un modèle de définition de table de base de données. En général, la création d`une sous-classe d`un modèle entraîne une nouvelle table de base de données avec une référence à l`héritage table-multi-table du modèle d`origine. Étant donné que nous avons des modèles de proxy pour ces, nous pouvons créer différentes interfaces d`administration (Rappelez-vous que Django reprend sur les modèles enregistrés). Les modèles de 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: QSortFilterProxyModel permet de filtrer les données d`un modèle source avant d`être fournies aux vues, et permet également au contenu d`un modèle source d`être fourni aux vues en tant que données pré-triées. Les implémentations par défaut des fonctions ci-dessus dans QSortFilterProxyModel retournent true pour s`assurer que tous les éléments sont transmis à des vues; les réimplémentations de ces fonctions doivent renvoyer false pour filtrer les lignes et les colonnes individuelles.

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. Une alternative consiste à créer un champ-une colonne, si vous le souhaitez-pour le suivi du type d`histoire, puis la création de modèles proxy pour chaque type d`histoire en fonction de cette valeur. Étant donné que les modèles proxy héritent de QAbstractItemModel, ils peuvent être connectés à n`importe quel type de vue et peuvent être partagés entre les vues.