J'utilise django-nonrel en combinaison avec mongodb-engine. Cela fonctionne parfaitement si tous les champs stockés dans un objet mongodb sont également définis sur le modèle.Accéder aux données Mongodb d'origine d'un modèle Django
Mais j'ai des données supplémentaires sur l'objet mongodb, qui ne sont pas définies sur le modèle. Et c'est mon problème. Pour l'instant je fais une requête supplémentaire pour obtenir l'objet mongodb d'origine, comme ceci:
collection = connection.get_collection(self._meta.db_table)
self._mongo_data = collection.find_one({'_id': ObjectId(self.pk)})
Il fonctionne très bien, mais il est pas efficace parce que c'est la deuxième fois que cette requête est exécutée (d'abord pour la création du modèle et plus tard pour obtenir les données originales de mongodb).
Existe-t-il un moyen d'accéder aux données d'origine, récupérées pour la création du modèle?
La définition de ces champs supplémentaires sur le modèle n'est pas une option, car des données supplémentaires sont créées à la volée.
Merci pour votre aide! J'ai découvert que je peux ajouter les données mongo supplémentaires au jeu de résultats, malheureusement ces données supplémentaires sont perdues une fois le modèle créé: https://github.com/django/django/blob/master/django/db/models/ query.py # L298 – Willian
Je pense que votre meilleur pari est de prendre les données supplémentaires et de les intégrer en utilisant un document incorporé ou un champ dict. – gone