Modèle unique de procuration en douane

La partie la plus importante d`un modèle – et la seule partie requise d`un modèle – est la liste des champs de base de données qu`elle définit. Les champs sont spécifiés par les attributs de classe. La fonction dateFilterChanged () est appelée chaque fois que l`utilisateur modifie la plage de dates valides. Nous récupérons les nouvelles dates à partir de l`interface utilisateur et appelons les fonctions correspondantes (fournies par notre modèle de proxy personnalisé) pour définir les dates minimales et maximales du modèle proxy. Comme nous l`avons expliqué ci-dessus, l`appel de ces fonctions met également à jour le modèle. L`autre différence qui est plus importante pour les modèles de proxy, est la façon dont les gestionnaires de modèles sont gérés. Les modèles de proxy sont censés se comporter exactement comme le modèle pour lequel ils sont proxy. Ils héritent donc des gestionnaires du modèle parent, y compris le gestionnaire par défaut. Dans le cas d`héritage de modèle multitable normal, les enfants n`héritent pas des gestionnaires de leurs parents car les gestionnaires personnalisés ne sont pas toujours appropriés lorsque des champs supplémentaires sont impliqués. La documentation du gestionnaire a plus de détails sur ce dernier cas. Nous allons d`abord jeter un oeil à la MySortFilterProxyModel classe pour voir comment le modèle de proxy personnalisé est implémenté, puis nous allons jeter un oeil à la Window classe pour voir comment le modèle est utilisé. Enfin, nous allons jeter un coup d`œil à la fonction main ().

Nous voulons être en mesure de filtrer nos données en spécifiant une période de temps donnée. Pour cette raison, nous implémentons les fonctions setFilterMinimumDate () et setFilterMaximumDate () personnalisées, ainsi que les fonctions filterMinimumDate () et filterMaximumDate () correspondantes. Nous réimplémentons la fonction filterAcceptsRow () de QSortFilterProxyModel pour accepter uniquement les lignes avec des dates valides, et QSortFilterProxyModel:: lessThan () pour pouvoir trier les expéditeurs par leurs adresses de messagerie. Enfin, nous mettons en œuvre une fonction de commodité dateInRange () que nous utiliserons pour déterminer si une date est valide. Le premier élément de chaque tuple est la valeur qui sera stockée dans la base de données, le deuxième élément sera affiché par l`interface d`administration, ou dans un ModelChoiceField. Étant donné une instance d`un objet de modèle, la valeur d`affichage d`un champ de choix est accessible à l`aide de la méthode get_FOO_display. Par exemple: ForeignKey, ManyToManyField et OneToOneField requièrent que le premier argument soit une classe de modèle, utilisez donc l`argument de mot clé verbose_name: les modèles proxy peuvent être insérés entre un modèle existant et n`importe quel nombre de vues.