2012-07-16 1 views
4

Est-il possible de récupérer le sous-ensemble de champs à l'aide de Django mongodb nonrel? Je suis totalement novice en python, mais j'ai de bonnes connaissances en mongo.Récupération du sous-ensemble de champs en interrogeant le champ incorporé

Mon exigence est très simple, je voulais interroger la collection par son champ intégré et retour seulement quelques champs spécifiques

je pouvais le faire dans MongoDB par

db.Contract.find({'owner.name':'Ram'},{'address':1}) 

et j'ai essayé cela en django

Contract.objects.filter(owner__name='Ram') 

mais il renvoie une erreur

raise FieldError("Join on field %r not permitted. Did you misspell %r for the lookup type?" % (name, names[pos + 1])) FieldError: Join on field 'owner' not permitted. Did you misspell 'name' for the lookup type?

suis totalement frappé ici. Je crois que j'ai mes modèles comme spécifié dans la documentation.

class SimplePerson(models.Model): 
    name = models.CharField(max_length=255) 
    user_key = models.CharField(max_length=255) 


class Contract(models.Model): 
    owner = EmbeddedModelField('SimplePerson') 
    title = models.CharField(max_length=120,) 

C'est vraiment bizarre. Je n'ai trouvé aucune référence dans le site de documentation sur la façon d'interroger le champ incorporé & récupérer le sous-ensemble de champs.

Enfin j'ai utilisé raw_query pour interroger le champ embarqué

Contract.objects.raw_query({'owner.name':'Ram'}) 

Mais toujours pas en mesure de comprendre comment récupérer le sous-ensemble des champs. Est-ce que quelqu'un peut m'aider?

Répondre

3

Les filtres de sous-objets ne sont pas encore possibles. Vous devez donc les placer dans raw_query (ce que vous avez déjà compris). Pour récupérer un sous-ensemble de champs, utilisez .values('field1', 'field2', ...).

+0

Merci @jonahs, son travail .. – RameshVel

Questions connexes