django queryset:选择与auth_user的连接

时间:2009-04-08 20:03:59

标签: django

这可能是一个非常糟糕的问题,但我无法让它发挥作用。

如果我有以下型号:

from django.contrib.auth.models import User

class Entry(models.Model):
    title = models.CharField()
    users = models.ManyToManyField(User)

如何获取当前登录用户的所有条目标题列表? 类似的东西:

list = Entry.objects.filter(users__????__contains = request.user)   

提前感谢您帮助我前进。

4 个答案:

答案 0 :(得分:3)

脱离我的头顶,我相信它可能是:

list = Entry.objects.filter(users__id__exact = request.user.pk)

list = Entry.objects.filter(users = request.user)

我相信其中任何一个都应该有用。有关many to many relationships的更多信息,请查看Django文档。

答案 1 :(得分:2)

我发现以下内容更优雅,但这取决于你。

request.user.entry_set.all()

编辑:每次要查找与用户关联的条目时,都不需要导入Entry模型类。使用user.entry_set可以避免这种麻烦。

答案 2 :(得分:1)

你应该可以这样做:

Entry.objects.filter(users=request.user)

Django将使用M2M表对正确的连接进行排序,并添加一个WHERE子句,将其限制为当前用户。

答案 3 :(得分:1)

Entry.objects.filter(users=request.user)

您的代码中存在错误。 CharField 需要 max_length