Skip to main content
 首页 » 编程设计

python之Django 错误 : 'bool' object has no attribute '__getitem__'

2024年08月27日29kenshinobiy

在我的 View 中添加过滤器时,出现以下 Django 错误。

'bool' object has no attribute '__getitem__' 

这是 View ,如果我删除 .filter(Proposal.user == request.user) 那么一切正常。此外,如果我打印 Proposal.user 和 request.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) 

我做错了什么?我不知道它引用的是哪个 bool 对象。您的帮助将非常有帮助!谢谢!

请您参考如下方法:

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

替换:

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

与:

.filter(user=request.user) 

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

此外,也不需要 all(),因为您之后要使用 filter():

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