【问题标题】:Django Error: 'bool' object has no attribute '__getitem__'Django 错误:“布尔”对象没有属性“__getitem__”
【发布时间】:2014-05-21 11:26:11
【问题描述】:

我在视图中添加过滤器时收到以下 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)

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

【问题讨论】:

    标签: python django view django-models model


    【解决方案1】:

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

    替换:

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

    与:

    .filter(user=request.user)
    

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

    另外,不需要all(),因为你之后使用的是filter()

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

    【讨论】:

    • 就是这样!这总是我以前尝试过的东西(但肯定做错了)。谢谢!
    【解决方案2】:

    你有双重= 正在抛出你的代码。

    改成:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-19
      • 2017-01-16
      • 1970-01-01
      • 2014-08-10
      • 2018-05-09
      • 2013-05-12
      • 1970-01-01
      • 2013-03-17
      相关资源
      最近更新 更多