1

タグが特定のリスト内のいずれかである Django データベース内のすべての曲を選択しようとしています。Song モデル、Tag モデル、および SongTag モデル (多対多の関係用) があります。

これは私の試みです:

taglist = ["cool", "great"]
tags = Tag.objects.filter(name__in=taglist).values_list('id', flat=True)
song_tags = SongTag.objects.filter(tag__in=list(tags))

この時点で、次のエラーが表示されます。

DatabaseError: MultiQuery does not support keys_only.

私は何を間違えていますか?問題に対してまったく異なるアプローチを提案できる場合は、それも大歓迎です!

編集:私は、Google AppEngineで Django-nonrelを使用して Django を使用していることを言及する必要がありました

4

3 に答える 3

4

ORM にクエリを作成させてください。

song_tags = SongTag.objects.filter(tag__name__in = taglist)
于 2011-08-30T18:23:44.310 に答える
0

Django も結合を使用して 1 つのクエリのみを生成するように、1 つのクエリのみを使用するようにしてください。このようなものが動作するはずです:

Song.objects.filter(tags__name__in=taglist)

この例から一部の名前を変更する必要がある場合があります (ほとんどの場合はtagsに含まれています)。 https://docs.djangoproject.com/en/1.3/ref/models/relations/tags__name__inを参照してください。

于 2011-08-30T18:26:47.663 に答える