Получить подмножество полей, запросив встроенное поле

Можно ли получить подмножество полей, используя Django mongodb nonrel. Я совершенно новичок в питоне, но хорошо разбираюсь в монго.

Мое требование очень прямолинейно, я хотел запросить коллекцию по ее встроенному полю и вернуть только некоторые определенные поля.

Я мог бы сделать это в mongodb с помощью

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

и я пробовал это в джанго

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

но выдает ошибку

поднять FieldError("Объединение в поле %r не разрешено. Вы ошиблись в написании %r для типа поиска?" % (имя, имена[pos + 1])) FieldError: Объединение в поле "владелец" не разрешено. Вы неправильно написали «имя» для типа поиска?

я полностью поражен здесь. Я считаю, что у меня есть свои модели, как указано в документации.

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, )

Это действительно странно. Я не смог найти ссылку на сайте документации о том, как запросить встроенное поле и получить подмножество полей.

Наконец, я использовал raw_query для запроса встроенного поля.

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

Но до сих пор не могу понять, как получить подмножество полей. Кто-нибудь может мне помочь?


person RameshVel    schedule 16.07.2012    source источник


Ответы (1)


Фильтры подобъектов пока невозможны, поэтому вам нужно перейти к raw_query (что вы уже поняли). Чтобы получить подмножество полей, используйте .values('field1', 'field2', ...).

person Jonas H.    schedule 16.07.2012