Types et classes de propriétés

Remarque : Les développeurs qui créent des applications sont vivement encouragés à utiliser la bibliothèque cliente NDB, qui présente plusieurs avantages par rapport à cette bibliothèque cliente, tels que la mise en cache automatique des entités via l'API Memcache. Si vous utilisez actuellement l'ancienne bibliothèque cliente DB, consultez le guide de migration de la bibliothèque cliente DB vers NDB.

Le datastore App Engine accepte un ensemble fixe de types de valeurs pour les propriétés des entités de données. Les classes Property peuvent définir de nouveaux types convertis vers et depuis des types de valeurs sous-jacents. Les types de valeurs peuvent être utilisés directement avec les propriétés dynamiques Expando et les modèles de propriété d'agrégation ListProperty.

Le tableau ci-dessous décrit les classes Property dont les valeurs correspondent directement aux types de données sous-jacents. Tous ces types de valeurs sont utilisables dans une propriété dynamique Expando ou un type d'agrégation ListProperty.

Classe Property Type de valeur Ordre de tri
IntegerProperty int
long (64 bits)
Numérique
FloatProperty float Numérique
BooleanProperty bool False < True
StringProperty str
unicode
Unicode (str est traité comme ASCII)
TextProperty db.Text Aucun
ByteStringProperty ByteString
Ordre des octets
BlobProperty db.Blob Aucun
DateProperty
TimeProperty
DateTimeProperty
datetime.date
datetime.time
datetime.datetime
Chronologique
GeoPtProperty db.GeoPt Par latitude,
puis par longitude
PostalAddressProperty db.PostalAddress Unicode
PhoneNumberProperty db.PhoneNumber Unicode
EmailProperty db.Email Unicode
UserProperty users.User Adresse e-mail
dans l'ordre Unicode. Notez qu'il convient d'éviter d'utiliser UserProperty, comme indiqué dans la note de la description de la classe UserProperty.
IMProperty db.IM Unicode
LinkProperty db.Link Unicode
CategoryProperty db.Category Unicode
RatingProperty db.Rating Numérique
ReferenceProperty
SelfReferenceProperty
db.Key Par éléments de chemin
(genre, identifiant,
genre, identifiant…)
blobstore.BlobReferenceProperty blobstore.BlobInfo Ordre des octets
ListProperty
StringListProperty
list d'un type compatible Si ascendant, par élément le moins important ;
si descendant, par élément le plus important

Types de valeurs du magasin de données

Cette partie décrit les types de valeurs disponibles pour les propriétés d'entités de datastore. Consultez la section ci-dessus pour obtenir la liste des classes Property correspondantes à utiliser avec les définitions Model.

À l'exception des types Python standards et de users.User, toutes les classes décrites dans cette section sont fournies par le module google.appengine.ext.db.

str ou unicode

Chaîne courte (1 500 octets maximum).

Une valeur str est supposée être codée en texte avec le codec ascii, et convertie en une valeur unicode avant d'être stockée. La valeur est renvoyée par le datastore en tant que valeur unicode. Pour les chaînes courtes utilisant d'autres codecs, utilisez une valeur unicode.

Les chaînes courtes sont indexées par le datastore, et peuvent servir dans les filtres et les ordres de tri. Pour les chaînes de texte de plus de 1 500 octets (non indexées), utilisez une instance Text. Pour les chaînes d'octets non codées de plus de 1 500 octets (également non indexées), utilisez une instance Blob. Pour les chaînes d'octets non codées non textuelles jusqu'à 1 500 octets (autres que des caractères) qui doivent être indexées, utilisez une instance ByteString.

Propriété du modèle : StringProperty

bool

Valeur booléenne (True ou False).

Propriété du modèle : BooleanProperty

int ou long

Valeur entière, comportant jusqu'à 64 bits.

Les valeurs int Python sont converties en valeurs long Python avant le stockage. Une valeur stockée en tant que int sera retournée en tant que long.

Si une valeur long supérieure à 64 bits est affectée, seuls les 64 bits les moins significatifs sont stockés.

Propriété du modèle : IntegerProperty

float

Nombre à virgule flottante.

Propriété du modèle : FloatProperty

datetime.datetime

Date et heure. Consultez la documentation du module datetime.

Si la valeur datetime possède un attribut tzinfo, elle sera convertie au fuseau horaire UTC pour le stockage. Les valeurs reviennent du datastore au fuseau horaire UTC, avec l'attribut tzinfo défini sur None. Pour une application qui a besoin de valeurs de date et d'heure dans un fuseau horaire spécifique, tzinfo doit être défini correctement lors de la mise à jour de la valeur, et les valeurs doivent être converties au fuseau horaire lorsque l'application y accède.

Certaines bibliothèques utilisent la variable d'environnement TZ pour contrôler le fuseau horaire appliqué aux valeurs date-heure. App Engine définit cette variable d'environnement sur "UTC". Notez que lorsque vous modifiez cette variable dans une application, le comportement de certaines fonctions d'horodatage reste inchangé, car les modifications apportées aux variables d'environnement ne sont pas visibles en dehors du code Python.

Si vous convertissez uniquement des valeurs vers et à partir d'un fuseau horaire spécifique, vous pouvez mettre en œuvre une propriété datetime.tzinfo personnalisée pour convertir les valeurs du datastore :

import datetime
import time

class Pacific_tzinfo(datetime.tzinfo):
    """Implementation of the Pacific timezone."""
    def utcoffset(self, dt):
        return datetime.timedelta(hours=-8) + self.dst(dt)

    def _FirstSunday(self, dt):
        """First Sunday on or after dt."""
        return dt + datetime.timedelta(days=(6-dt.weekday()))

    def dst(self, dt):
        # 2 am on the second Sunday in March
        dst_start = self._FirstSunday(datetime.datetime(dt.year, 3, 8, 2))
        # 1 am on the first Sunday in November
        dst_end = self._FirstSunday(datetime.datetime(dt.year, 11, 1, 1))

        if dst_start <= dt.replace(tzinfo=None) < dst_end:
            return datetime.timedelta(hours=1)
        else:
            return datetime.timedelta(hours=0)
    def tzname(self, dt):
        if self.dst(dt) == datetime.timedelta(hours=0):
            return "PST"
        else:
            return "PDT"

pacific_time = datetime.datetime.fromtimestamp(time.mktime(utc_time.timetuple()), Pacific_tzinfo())

Consultez la documentation du module datetime (y compris datetime.tzinfo). Consultez également le module tiers pytz, mais notez que la distribution pytz contient de nombreux fichiers.

La classe de propriété de modèle DateTimeProperty inclut des fonctionnalités telles que la possibilité d'utiliser automatiquement la date et l'heure de stockage d'une instance de modèle. Il s'agit de fonctionnalités du modèle, qui ne sont pas disponibles sur la valeur brute du datastore (comme dans une propriété dynamique Expando).

Propriétés du modèle : DateTimeProperty, DateProperty, TimeProperty

list

Liste de valeurs, dont chacune correspond à l'un des types de données reconnus.

Lorsqu'une liste (list) est utilisée comme valeur d'une propriété dynamique Expando, elle ne peut pas être vide. Cela s'explique par le processus de stockage des valeurs de type liste : une propriété de liste qui ne contient pas d'éléments n'est pas représentée dans le datastore. Vous pouvez utiliser une propriété statique et la classe ListProperty pour représenter une valeur de liste vide pour une propriété.

Propriété du modèle : ListProperty

db.Key

Clé d'une autre entité de magasin de données.

Remarque : Les chaînes de clés sont limitées à 1 500 octets maximum.

m = Employee(name="Susan", key_name="susan5")
m.put()
e = Employee(name="Bob", manager=m.key())
e.put()

m_key = db.Key.from_path("Employee", "susan5")
e = Employee(name="Jennifer", manager=m_key)

Propriétés du modèle : ReferenceProperty, SelfReferenceProperty

blobstore.BlobKey

Clé d'une valeur Blobstore, générée par le service Blobstore lors du transfert de la valeur.

Propriétés du modèle : blobstore.BlobReferenceProperty

users.User

Utilisateur disposant d'un compte Google.

Une valeur user.User dans le datastore ne sera pas mise à jour si l'utilisateur modifie son adresse e-mail. Pour cette raison, nous vous recommandons vivement d'éviter de stocker users.User en tant que valeur UserProperty, car elle inclut l'adresse e-mail, ainsi que l'ID unique. Si un utilisateur change d'adresse e-mail et que vous comparez l'ancienne valeur stockée user.User à la nouvelle valeur user.User, vous verrez qu'elles ne correspondent pas. Utilisez plutôt la valeur de user.User user_id() en tant qu'identifiant unique stable de l'utilisateur.

Propriété du modèle : UserProperty

classe Blob(arg=None)

Données binaires, sous la forme d'une chaîne d'octets. Il s'agit d'une sous-classe du type str intégré.

Les propriétés blob ne sont pas indexées et ne peuvent pas servir dans les filtres ou les ordres de tri.

Un objet blob convient pour des données binaires, telles que des images. Cette classe prend une valeur str, mais celle-ci est stockée sous forme de chaîne d'octets et n'est pas encodée sous forme de texte. Utilisez une instance Text pour les données textuelles volumineuses.

Propriété du modèle : BlobProperty

class MyModel(db.Model):
    blob = db.BlobProperty()

m = MyModel()
m.blob = db.Blob(open("image.png", "rb").read())

En XML, les objets blob sont encodés en base-64, qu'ils contiennent ou non des données binaires.

classe ByteString(arg)

Valeur blob courte ("chaîne d'octets") de 1 500 octets maximum. ByteString est une sous-classe de str qui prend une valeur str non codée en tant qu'argument de son constructeur.

Les valeurs ByteString sont indexées par le datastore, et peuvent servir dans les filtres et les ordres de tri. Pour les chaînes d'octets de plus de 1 500 octets (non indexées), utilisez une instance Blob. Pour les données texte codées, utilisez str (court, indexé) ou Text (long, non indexé).

Propriété du modèle : ByteStringProperty

classe Text(arg=None, encoding=None)

Chaîne longue. Il s'agit d'une sous-classe du type unicode intégré.

Transmettez une valeur arg unicode ou str. Si "arg" est une valeur str, il est analysé avec l'encodage spécifié par "encoding" ou ascii si aucun encodage n'est spécifié. Consultez la liste des encodages standards pour les valeurs possibles pour l'encodage.

Contrairement à une propriété d'entité dont la valeur est une simple valeur str ou unicode, une propriété Text peut comporter plus de 1 500 octets. Toutefois, les propriétés Text ne sont pas indexées, et ne peuvent pas servir dans les filtres et les ordres de tri.

Propriété du modèle : TextProperty

class MyModel(db.Model):
    text = db.TextProperty()

m = MyModel()
m.text = db.Text(u"kittens")

m.text = db.Text("kittens", encoding="latin-1")
classe Category(tag)

Catégorie ou "tag". Il s'agit d'une sous-classe du type unicode intégré.

Propriété du modèle : CategoryProperty

class MyModel(db.Model):
    category = db.CategoryProperty()

m = MyModel()
m.category = db.Category("kittens")

En XML, il s'agit d'un élément Atom Category.

classe Email(email)

Adresse e-mail Il s'agit d'une sous-classe du type unicode intégré.

Ni la classe Property, ni la classe Value n'effectuent de validation des adresses e-mail, elles stockent simplement la valeur.

Propriété du modèle : EmailProperty

class MyModel(db.Model):
    email_address = db.EmailProperty()

m = MyModel()
m.email_address = db.Email("larry@example.com")

En XML, il s'agit d'un élément gd:email.

classe GeoPt(lat, lon=None)

Point géographique représenté par des coordonnées de latitude et de longitude à virgule flottante.

Propriété du modèle : GeoPtProperty

En XML, il s'agit d'un élément georss:point.

classe IM(protocol, address=None)

Identificateur de messagerie instantanée.

La valeur protocol est l'URL canonique du service de messagerie instantanée. Exemples de valeurs possibles :

ProtocoleDescription
sipSIP/SIMPLE
xmppXMPP/Jabber
http://aim.com/AIM
http://icq.com/ICQ
http://messenger.msn.com/MSN Messenger
http://messenger.yahoo.com/Yahoo Messenger
http://sametime.com/Lotus Sametime
http://gadu-gadu.pl/Gadu-Gadu
inconnuInconnu ou non spécifié

La valeur address est l'adresse de l'identificateur.

Propriété du modèle : IMProperty

class MyModel(db.Model):
    im = db.IMProperty()

m = MyModel()
m.im = db.IM("http://example.com/", "Larry97")

En XML, il s'agit d'un élément gd:im.

URL pleinement qualifiée. Il s'agit d'une sous-classe du type unicode intégré.

Propriété du modèle : LinkProperty

class MyModel(db.Model):
    link = db.LinkProperty()

m = MyModel()
m.link = db.Link("http://www.google.com/")

En XML, il s'agit d'un élément Atom Link.

class PhoneNumber(phone)

Numéro de téléphone intelligible. Il s'agit d'une sous-classe du type unicode intégré.

Propriété du modèle : PhoneNumberProperty

class MyModel(db.Model):
    phone = db.PhoneNumberProperty()

m = MyModel()
m.phone = db.PhoneNumber("1 (206) 555-1212")

En XML, il s'agit d'un élément gd.phoneNumber.

classe PostalAddress(address)

Adresse postale. Il s'agit d'une sous-classe du type unicode intégré.

Propriété du modèle : PostalAddressProperty

class MyModel(db.Model):
    address = db.PostalAddressProperty()

m = MyModel()
m.address = db.PostalAddress("1600 Ampitheater Pkwy., Mountain View, CA")

En XML, il s'agit d'un élément gd:postalAddress.

classe Rating(rating)

Note fournie par l'utilisateur pour un contenu, sous la forme d'un entier entre 0 et 100. Il s'agit d'une sous-classe du type long intégré. La classe s'assure que la valeur est un entier compris entre 0 et 100, et génère une erreur BadValueError si la valeur n'est pas valide.

Propriété du modèle : RatingProperty

class MyModel(db.Model):
    rating = db.RatingProperty()

m = MyModel()
m.rating = db.Rating(97)

En XML, il s'agit d'un élément gd:rating.

Classes de propriétés

Toutes les classes de propriétés de modèle fournies par google.appengine.ext.db sont des sous-classes de la classe de base Property et sont compatibles avec tous les arguments du constructeur de base. Pour plus d'informations sur ces arguments, consultez la documentation sur la classe de base.

Le package google.appengine.ext.db fournit les classes de propriétés de modèle suivantes :

classe BlobProperty(…)

Collection non interprétée de données binaires.

Les données blob correspondent à une chaîne d'octets. Pour les données de texte, qui peuvent impliquer un encodage, utilisez TextProperty.

Type de valeur : Blob

classe BooleanProperty(…)

Valeur booléenne (True ou False).

Type de valeur : bool

classe ByteStringProperty(verbose_name=None, …)

Valeur blob courte ("chaîne d'octets") de 1 500 octets maximum.

Les valeurs ByteStringProperty sont indexées et peuvent être utilisées dans les filtres et les ordres de tri.

Cette valeur est semblable à StringProperty, sauf qu'elle n'est pas encodée. Les octets sont stockées de façon littérale.

Si la propriété ByteStringProperty est requise, la valeur ne peut pas être une chaîne vide.

Type de valeur : ByteString

classe CategoryProperty(…)

Catégorie ou "tag" (mot ou phrase descriptif).

Type de valeur : Category

classe DateProperty(verbose_name=None, auto_now=False, auto_now_add=False, …)

Date sans heure du jour (consultez la section DateTimeProperty pour en savoir plus).

Type de valeur : datetime.date converti en interne en datetime.datetime

classe DateTimeProperty(verbose_name=None, auto_now=False, auto_now_add=False, …)

Date et heure.

Si auto_now est défini sur True, la valeur de la propriété est définie sur l'heure actuelle chaque fois que l'instance de modèle est stockée dans le datastore, et remplace la valeur précédente. Cet argument est utile pour suivre la date et l'heure de dernière modification d'une instance de modèle.

Si auto_now_add est défini sur True, la valeur de la propriété est définie sur l'heure actuelle lors du premier stockage de l'instance de modèle dans le datastore, sauf si une valeur lui a déjà été attribuée. Cet argument est utile pour stocker la date et l'heure de création d'une instance de modèle.

Les valeurs date-heure sont stockées au format de fuseau horaire UTC et renvoyées en utilisant ce même fuseau horaire. Consultez la section datetime.datetime pour en savoir plus sur la gestion des fuseaux horaires.

Type de valeur : datetime.datetime

classe EmailProperty(…)

Adresse e-mail

Ni la classe Property, ni la classe Value n'effectuent de validation des adresses e-mail, elles stockent simplement la valeur.

Type de valeur : Email

classe FloatProperty(…)

Nombre à virgule flottante.

Type de valeur : float

classe GeoPtProperty(…)

Point géographique représenté par des coordonnées de latitude et de longitude à virgule flottante.

Type de valeur : GeoPt

classe IMProperty(…)

Identificateur de messagerie instantanée.

Type de valeur : IM

classe IntegerProperty(…)

Valeur entière, comportant jusqu'à 64 bits.

Les valeurs int Python sont converties en valeurs long Python avant le stockage. Une valeur stockée en tant que int sera retournée en tant que long.

Si une valeur long supérieure à 64 bits est affectée, seuls les 64 bits les moins significatifs sont stockés.

Type de valeur : int ou long

classe LinkProperty(…)

URL complète.

Type de valeur : Link

classe ListProperty(item_type, verbose_name=None, default=None, …)

Liste de valeurs du type spécifié par item_type.

Dans une requête, la comparaison d'une propriété de liste et d'une valeur effectue le test sur les membres de la liste : list_property = value vérifie si la valeur apparaît n'importe où dans la liste, list_property < value vérifie si un des membres de la liste est inférieur à la valeur donnée, etc.

Une requête ne peut pas comparer deux valeurs de type liste. Il n'existe aucun moyen de vérifier l'égalité de deux listes sans tester séparément chaque élément pour vérifier leur appartenance aux deux listes.

L'argument item_type représente le type des éléments de la liste, sous la forme d'un type ou d'une classe Python. Tous les éléments de la liste doivent être du type donné. item_type doit être l'un des types de valeurs du datastore et ne peut pas être list.

La valeur de ListProperty ne peut pas être None. Toutefois, il peut s'agir d'une liste vide. Si None est spécifié pour l'argument par défaut (ou si l'argument par défaut n'est pas spécifié), la valeur par défaut de la propriété est la liste vide.

Conseil : Dans la mesure où les types d'agrégation ListProperty n'utilisent pas les classes Property, les fonctionnalités de la classe Property, telles que les valeurs automatiques et la validation, ne s'appliquent pas automatiquement aux membres de la valeur de type "list". Si vous souhaitez valider une valeur de membre à l'aide d'une classe Property, vous pouvez instancier la classe de propriété et appeler sa méthode validate() sur la valeur.

L'argument default est la valeur par défaut de la propriété de liste. Si None est spécifié, la valeur par défaut est une liste vide. Une propriété de liste peut définir un outil de validation personnalisé pour interdire la liste vide.

Consultez la page Modélisation des données pour en savoir plus sur les propriétés et les valeurs de la liste.

Type de valeur : list Python de valeurs du type spécifié

classe PhoneNumberProperty(…)

Numéro de téléphone intelligible.

Type de valeur : PhoneNumber

classe PostalAddressProperty(…)

Adresse postale.

Type de valeur : PostalAddress

classe RatingProperty()

Note fournie par l'utilisateur pour un contenu, sous la forme d'un entier entre 0 et 100.

Type de valeur : Rating

classe ReferenceProperty(reference_class=None, verbose_name=None, collection_name=None, …)

Référence à une autre instance de modèle. Par exemple, une référence peut indiquer une relation plusieurs-à-un entre le modèle comportant la propriété et le modèle référencé par la propriété.

L'argument reference_class est la classe de modèle de l'instance de modèle référencée. Si vous indiquez une classe, seules des instances de modèle de cette classe peuvent être affectées à cette propriété. Si None est spécifié, toute instance de modèle peut être la valeur de cette propriété.

L'argument collection_name est le nom de la propriété à attribuer à la classe de modèle référencée. La valeur de la propriété est une Query pour toutes les entités qui référencent l'entité. Si aucune valeur collection_name n'est définie, modelname_set est utilisé (nom du modèle référencé en lettres minuscules, suivi de _set).

Remarque : collection_name doit obligatoirement être défini si plusieurs propriétés au sein d'un même modèle font référence à la même classe de modèle. Sinon, une erreur DuplicatePropertyError sera générée lors de la génération des noms par défaut.

La classe ReferenceProperty référence et déréférence automatiquement les instances de modèle en tant que valeurs de propriétés : lorsqu'une instance de modèle est affectée directement à une propriété ReferenceProperty, sa clé est utilisée comme valeur. Si vous utilisez la valeur ReferenceProperty comme s'il s'agissait d'une instance de modèle, l'entité de datastore est récupérée et l'instance de modèle est créée lorsque vous l'utilisez pour la première fois de cette manière. Les propriétés de référence non touchées n'effectuent pas de requête sur des données inutiles.

class Author(db.Model):
    name = db.StringProperty()

class Story(db.Model):
    author = db.ReferenceProperty(Author)

story = db.get(story_key)
author_name = story.author.name

author = db.get(author_key)
stories_by_author = author.story_set.get()

Comme pour une valeur Key, une valeur de propriété de référence peut faire référence à une entité de données qui n'existe pas. Lorsqu'une entité référencée est supprimée du datastore, les références à cette entité ne sont pas mises à jour. L'accès à une entité qui n'existe pas génère une erreur ReferencePropertyResolveError.

La suppression d'une entité ne supprime pas les entités désignées par une propriété de référence.

Type de valeur : db.Key

classe SelfReferenceProperty(verbose_name=None, collection_name=None, …)

Référence à une autre instance de modèle de la même classe (voir ReferenceProperty).

Type de valeur : db.Key

classe StringListProperty(verbose_name=None, default=None, …)

Semblable à une propriété de liste de valeurs Python str ou unicode (basestring).

Type de valeur : list Python de valeurs str ou unicode

classe StringProperty(verbose_name=None, multiline=False, …)

Chaîne courte. Prend une valeur Python str ou unicode (basestring) inférieure ou égale à 1 500 octets.

Les valeurs StringProperty sont indexées et peuvent être utilisées dans les filtres et les ordres de tri.

Si multiline est défini sur False, la valeur ne peut pas inclure de caractères de saut de ligne. La bibliothèque djangoforms l'utilise pour imposer une différence entre les champs de texte et les champs de zone de texte dans le modèle de données. D'autres bibliothèques peuvent l'utiliser à des fins similaires.

Si la propriété de chaîne est requise, sa valeur ne peut pas être une chaîne vide.

Type de valeur : str ou unicode

classe TextProperty()

Chaîne longue.

Contrairement à StringProperty, une valeur TextProperty peut comporter plus de 1 500 octets. Toutefois, les valeurs TextProperty ne sont pas indexées, et ne peuvent pas être utilisées dans les filtres ou les ordres de tri.

Les valeurs TextProperty stockent le texte avec un encodage de texte. Pour les données binaires, utilisez BlobProperty.

Si la propriété de texte est requise, sa valeur ne peut pas être une chaîne vide.

Type de valeur : Text

classe TimeProperty(verbose_name=None, auto_now=False, auto_now_add=False, …)

Heure du jour sans date. Prend une valeur datetime.time de bibliothèque standard Python. Consultez la section DateTimeProperty pour en savoir plus.

Type de valeur : datetime.time converti en interne en datetime.datetime

classe UserProperty(verbose_name=None, auto_current_user=False, auto_current_user_add=False, …)

Important : Nous vous recommandons vivement de ne pas stocker de propriété UserProperty, car elle contient l'adresse e-mail et l'ID unique de l'utilisateur. Si un utilisateur modifie son adresse e-mail et si vous comparez l'ancienne valeur User stockée à la nouvelle valeur User, elles ne correspondront pas.

Utilisateur disposant d'un compte Google.

Si auto_current_user est défini sur True, la valeur de la propriété est définie sur l'utilisateur actuellement connecté chaque fois que l'instance de modèle est stockée dans le datastore, et remplace la valeur précédente. Cet argument est très utile pour savoir quel utilisateur modifie une instance de modèle.

Si auto_current_user est défini sur True, la valeur de la propriété est définie sur l'utilisateur actuellement connecté lors du premier stockage de l'instance de modèle dans le datastore, sauf si une valeur lui a déjà été attribuée. Cet argument est très utile pour savoir quel utilisateur crée une instance de modèle, lorsque celui-ci peut être différent de l'utilisateur qui la modifie ultérieurement.

La propriété UserProperty n'accepte pas de valeur par défaut. Les valeurs par défaut sont définies lors de la première importation du modèle et sont susceptibles de ne pas correspondre à l'utilisateur actuellement connecté du fait de la mise en cache des importations.

Type de valeur : users.User