这可能是一个非常糟糕的问题,但我无法让它发挥作用。
如果我有以下型号:
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)
提前感谢您帮助我前进。
答案 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 。