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()不会更改查询集对象。相反,它会创建并返回一个应用了新过滤器的克隆。所以如果你想过滤一个现有的查询集,你应该这样做:

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