4

Django mongodb nonrelを使用してフィールドのサブセットを取得することは可能ですか? 私はPythonにはまったく慣れていませんが、mongoについては十分な知識があります。

私の要件は非常に簡単です。埋め込みフィールドでコレクションをクエリし、特定のフィールドのみを返したいと思っていました

私はmongodbでそれを行うことができました

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

そして私はdjangoでこれを試しました

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

しかし、それはエラーをスローします

raise FieldError("フィールド %r での結合は許可されていません。ルックアップ タイプの %r のスペルを間違えましたか?" % (name, names[pos + 1])) FieldError: フィールド 'owner' での結合は許可されていません。検索タイプの「名前」のつづりを間違えていませんか?

ここで完全に打たれました。ドキュメントで指定されているモデルを持っていると思います。

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'})

しかし、フィールドのサブセットを取得する方法をまだ理解できていません。誰かが私を助けることができますか?

4

2 に答える 2

3

サブオブジェクトフィルターはまだ使用できないため、raw_query(すでに理解している)にドロップダウンする必要があります。フィールドのサブセットを取得するには、を使用します.values('field1', 'field2', ...)

于 2012-07-16T18:40:44.397 に答える