这可能是一个非常简单的问题,但我一直在寻找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)
更多但没有成功,似乎应该很容易,但我仍然找不到正确的方法。任何想法都会受到赞赏。
答案 0 :(得分:1)
这应该有效:
profiles = Profile.objects.filter(spoken_languages__idiom="language here")
请注意,在查询集上调用.filter()
不会更改查询集对象。相反,它会创建并返回应用了新过滤器的克隆。因此,如果要筛选现有的查询集,则应执行以下操作:
query_set = query_set.filter(spoken_languages__idiom="language here")