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. La mise en cache est une fonctionnalité très utile de NGINX plus et une fonctionnalité importante dans le modèle de proxy. La mise en cache des fichiers statiques et la micromise en cache – c`est-à-dire la mise en cache du contenu généré par l`application pendant de brèves périodes – accélère la livraison de contenu aux utilisateurs et réduisent la charge sur l`application. Je crée un modèle proxy à partir d`auth. Modèle de groupe, que je veux lui appliquer des autorisations. D`autre part, les modèles de proxy sont censés se comporter exactement comme le modèle qu`ils sont proxy pour. Ils sont toujours synchronisés avec le modèle parent car ils héritent directement de ses champs et gestionnaires. Maintenant, modifiez votre modèle de proxy de sorte que tous les objets ReviewArticle sont enregistrés dans la section Review: QSortFilterProxyModel permet de filtrer les données d`un modèle source avant d`être fournies aux vues, et permet également le contenu d`un modèle source à fournir aux vues en tant que données pré-triées. Le collègue Lincoln Looper, Martin Mahner, a publié une excellente écriture sur la façon d`utiliser des modèles proxy pour séparer le personnel et les comptes d`utilisateur dans l`admin de Django. Nous avons souvent besoin de cela dans les projets clients, mais les gens ne considèrent pas souvent les modèles proxy pour cette fonctionnalité. Voici un autre scénario que nous avons rencontré récemment où ils sont venus dans utile.

Les champs ForeignKey acceptent un certain nombre d`arguments supplémentaires qui sont expliqués dans la référence de champ de modèle. Ces options permettent de définir la façon dont la relation doit fonctionner; tous sont facultatifs. 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. Les gestionnaires de modèles sont hérités des classes de base abstraites. La substitution d`un champ hérité référencé par un gestionnaire hérité peut entraîner des bogues subtils. Voir les gestionnaires personnalisés et l`héritage de modèle. Django ne place que deux restrictions sur les noms des champs de modèle: le modèle proxy tire également parti du fait que la passerelle API est un lieu logique pour gérer les fonctionnalités qui ne sont pas spécifiques aux microservices, telles que la mise en cache, l`équilibrage de charge et les autres décrits dans ce billet de blog.

Voici un exemple simplifié et artificiel modèle Story. Par défaut, Django donne à chaque modèle le champ suivant: vous pouvez interroger, supprimer, éditer, créer etc sur le modèle de proxy mais les effets seront sur le modèle d`origine. Vous pouvez définir des modèles en tant que proxy simplement en ajoutant proxy = true dans la classe Meta du modèle. Une fois que vous avez défini vos modèles, vous devez indiquer à Django que vous allez utiliser ces modèles. Pour ce faire, modifiez votre fichier de paramètres et modifiez le paramètre INSTALLED_APPS pour ajouter le nom du module qui contient votre models.py. Chaque champ prend un certain ensemble d`arguments spécifiques au champ (documentés dans la référence de champ de modèle). Par exemple, CharField (et ses sous-classes) requièrent un argument max_length qui spécifie la taille du champ de base de données VARCHAR utilisé pour stocker les données. Les deux autres modèles de l`ARM, le modèle de maillage de routeur et le modèle de tissu, s`appuyer sur le modèle de proxy pour offrir une fonctionnalité nettement plus grande. (Ces modèles seront décrits dans les prochains Articles de blog de cette série.) Cependant, une fois que vous comprenez le modèle de proxy, les autres modèles sont relativement faciles à saisir.