Modèle de procuration word

Classes OneToOneField utilisées pour devenir automatiquement la clé primaire d`un modèle. Ce n`est plus vrai (bien que vous pouvez passer manuellement dans l`argument primary_key si vous le souhaitez). Ainsi, il est maintenant possible d`avoir plusieurs champs de type OneToOneField sur un seul modèle. Compte tenu d`une instance de modèle, la valeur d`affichage d`un champ avec des choix est accessible à l`aide de la méthode get_FOO_display (). Par exemple: le plus gros problème avec la vue de modèle de Qt est la quantité d`API qui doit être implémentée pour écrire un modèle de proxy. Outre l`implémentation de l`interface QAbstractItemModel et la petite interface supplémentaire dans QAbstracyProxyModel, une interface d`observateur pour le modèle source doit également être implémentée. Les modèles source émettent des signaux tels que Rowsabouttobeinséré et rowsInserted, et des signaux similaires pour la suppression, le déplacement, la restructuration de la mise en page entière et une réinitialisation complète du modèle source. Selon l`implémentation du modèle de proxy, il peut également être pertinent que des éléments avec des enfants soient insérés ou qu`une sous-arborescence entière soit supprimée ou déplacée. Les modèles proxy peuvent également avoir des erreurs de contour si des éléments sont supprimés ou insérés en haut ou en bas d`une liste existante, ou si une ligne est déplacée d`une ligne visible vers une ligne invisible ou inversement. Ma première tentative de le faire a abouti à une suite de tests unitaires qui commandait un modèle source à travers une séquence d`étapes couvrant l`insertion, le déplacement, la suppression et les changements de mise en page. Cela a fonctionné en ce qu`il était possible de trouver des bugs avec elle, mais il ne s`est pas bien dimensionné à différentes configurations du modèle de proxy sous test et a été inflexible à l`ajout de nouveaux tests.

J`ai commencé à écrire un fichier de test différent par configuration (kselectionproxymodeltest-onlyselectedchildren et kselectionproxymodeltest-selectedbranches par exemple, et ils n`ont pas couvert des sélections différentes), et l`ajout de tests n`importe où, mais la fin de la séquence signifiait la mise à jour de tous les testCases dans toutes les classes de test. En outre, la séquence des tests n`a pas fait de recherche de bogues plus facile. L`exécution d`un seul test pour un point de données dans le test était possible dans la plupart, mais pas tous les cas, et même alors, tous les tests précédents dans la séquence seraient exécutés avant le test de données particulier d`intérêt, causant beaucoup de bruit. C`est ce que l`héritage de modèle de proxy est pour: créer un proxy pour le modèle d`origine. Vous pouvez créer, supprimer et mettre à jour des instances du modèle proxy et toutes les données seront enregistrées comme si vous utilisiez le modèle d`origine (non proxied). La différence est que vous pouvez changer des choses comme le classement par défaut du modèle ou le gestionnaire par défaut dans le proxy, sans avoir à modifier l`original.