Django错误:'bool'对象没有属性'__getitem__'

时间:2014-04-08 16:13:55

标签: python django view django-models model

当我在视图中添加过滤器时,我收到以下Django错误。

'bool' object has no attribute '__getitem__'

这是视图,如果我删除.filter(Proposal.user == request.user),那么一切正常。另外,如果我打印Proposal.userrequest.user它们是相同的。

# views.py
def my_proposal_list(request):
    response = {}
    response['proposal_list'] = Proposal.objects.all().filter(Proposal.user == request.user)
    return render(request, "my-proposals.html", response)

这是提案模型。它应该是返回和过滤:

# Models.py
class Proposal(models.Model):
    user = models.ForeignKey(User)
    title = models.CharField(max_length=50, verbose_name='Name Your Proposal')
    description = models.CharField(max_length=200, help_text='Who is this proposal for? What does it do?')
    create_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return "%s %s" % (self.title, self.user)

我做错了什么?我不知道它引用了哪个布尔对象。你的帮助会非常有帮助!谢谢!

2 个答案:

答案 0 :(得分:3)

您应该为=参数使用单个filter()符号:

替换:

.filter(Proposal.user == request.user)

使用:

.filter(user=request.user)

请注意,您也可以省略Proposal.,并在此处仅使用user

此外,由于您之后使用all(),因此无需filter()

response['proposal_list'] = Proposal.objects.filter(user=request.user)

答案 1 :(得分:0)

你的双重=正在抛弃你的代码。

将其更改为:

response['proposal_list'] = Proposal.objects.all().filter(Proposal.user=request.user)