0

これは非常に簡単な質問かもしれませんが、django のドキュメントをしばらく探していましたが、答えが見つかりませんでした。

私の問題は、言語を指定して、複数話せるユーザーがその言語を話すかどうかを確認したいということです。

私の関連クラス:

class Language(models.Model):
    idiom = models.CharField(max_length=40, unique=True)

class Profile(UserenaBaseProfile):
    spoken_languages = models.ManyToManyField(Language, blank = True)

与えられた:query_set = Profile.objects.all()

私は次のようなことを試しました:

ls = Language.get(idiom="some language here")

query_set.filter(spoken_languages__idiom__contains=ls.idiom)
query_set.filter(spoken_languages__contains=ls)

また

ls = Language.objects.filter(idiom="some language")
query_set.filter(spoken__languages__in=ls)

いくつかの成功はありませんが、それは非常に簡単なはずですが、それでも正しいアプローチが見つかりません。どんなアイデアでも大歓迎です。

4

1 に答える 1

1

これはうまくいくはずです:

profiles = Profile.objects.filter(spoken_languages__idiom="language here")

.filter()querysetを呼び出しても queryset オブジェクトは変更されないことに注意してください。代わりに、新しいフィルターが適用されたクローンを作成して返します。したがって、既存のクエリセットをフィルタリングする場合は、次のようにする必要があります。

query_set = query_set.filter(spoken_languages__idiom="language here")
于 2013-07-28T15:57:13.040 に答える