2015-12-12 3 views
1

nonrel (MongoDB) avec tastypie.I ont créé une classe de ressources qui reviennent sélectionné auth_user de la database.Because de certaines raisons pour lesquelles je ne change _id type de champ de ObjectId à Int64 .J'ai utilisé raw_query() pour accéder à auth_user, mais cela ne semble pas fonctionner.Peut-on me suggérer ce que je devrais faire pour que raw_query() fonctionne pour UserModel.objet « UserManager » n'a pas d'attribut « raw_query »

Voici ma ressource tastypie:

class UserResource(ModelResource): 
    class Meta: 

     queryset=User.objects.raw_query({'_id':5}) 
     resource_name="user" 
     fields=["username","first_name","last_name"] 
     include_resource_uri=False 
     allowed_methods=["get"] 

sortie:

'UserManager' object has no attribute 'raw_query' 

Répondre

0

Ce n'est pas liée à Tastypie du tout. Etes-vous sûr d'avoir besoin d'une requête brute, ou ce qui précède n'est-il qu'un exemple?

En regardant le docs vous devriez être en mesure de faire ce qui suit:

from django_mongodb_engine.contrib import MongoDBManager 

class User(models.Model): 
    mongo_manager = MongoDBManager() 

Ensuite, vous devriez pouvoir l'utiliser comme vous le faites ci-dessus, à savoir:

queryset=User.mongo_manager.raw_query({'_id':5}) 
+0

toujours eu la même question erreur.Dispositif était de savoir comment puis-je changer de gestionnaire pour le UserModel de django? –

+1

Essayez de remplacer 'objets' avec quelque chose d'autre si vous n'avez besoin de rien dans le' UserManager' –

+0

merci dan pour votre suggestion..J'ai trouvé la solution et répondu à ma propre question :) –

0

Je me solution à ce problème et pour aider les autres, je réponds à ma propre question. J'espère que cela aidera quelqu'un.

Cette solution consiste à créer un modèle de proxy. En déclarant des modèles de proxy, nous pouvons faire des opérations sur le modèle parent et même modifier le gestionnaire.

modèle proxy:

class UserClass(User): 
    objects = MongoDBManager() 
    class Meta: 
     proxy=True 

ressources:
classe UserResource (modelResource): classe Meta:

 queryset=UserClass.objects.raw_query({'_id':5}) 
     resource_name="user" 
     fields=["username","first_name","last_name"] 
     include_resource_uri=False 
     allowed_methods=["get"]