Django'NonType'对象没有属性'id'

时间:2013-06-25 10:45:34

标签: django

我正在尝试创建一个简单的收件箱消息应用,但我一直遇到此错误。

我知道错误指向此处

if Message.objects.filter(in_response_to=messages.in_response_to):
     m = messages.in_response_to.id

我想传达的是,如果他们是messages.in_response_to中的对象。做这个 。我不知道如何修复它,我花了好几个小时尝试,有人可以帮助我

错误

'NoneType' object has no attribute 'id'
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
  115.                         response = callback(request, *callback_args, **callback_kwargs)
File "C:\Python27\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
  25.                 return view_func(request, *args, **kwargs)
File "C:\mysite\pet\views.py" in read
  944.         m = messages.in_response_to.id

views.py

@login_required
def read(request,id):
    try:
        messages = Message.objects.get(pk=id,recipient=request.user.id) 
    except Message.DoesNotExist:
        return HttpResponseRedirect(reverse('world:Display'))



    if Message.objects.filter(in_response_to=messages.in_response_to):
        m = messages.in_response_to.id
        message = Message.objects.filter(in_response_to=messages.in_response_to ).filter(created__lt=messages.created)

        initial = {}
        initial.update({'hidden_field': m})
        form = NewMessageForm(initial=initial)
        return render(request,'read.html',{'message':message,'form':form,'m':m})
    else:
        initial = {}
        initial.update({'hidden_field': messages.id})
        form = NewMessageForm(initial=initial)

        return render(request,'read.html',{'messages':messages,'form':form})

模型。

class Message(models.Model):
    user = models.ForeignKey(User, related_name='sender')
    recipient = models.ForeignKey(User, related_name='recipient')
    created = models.DateTimeField(auto_now_add=True)
    in_response_to = models.ForeignKey('self', null=True, blank=True)


def __unicode__(self):
    return self.body

@Ignacio Vazquez-Abrams

    if Message.objects.filter(in_response_to=messages.in_response_to):
        m = messages.in_response_to.id
        message = Message.objects.filter(in_response_to=messages.in_response_to ).filter(created__lt=messages.created)

    initial = {}
    initial.update({'hidden_field': m})
    form = NewMessageForm(initial=initial)
    return render(request,'read.html',{'message':message,'form':form,'m':m})

initial = {}
initial.update({'hidden_field': messages.id})
form = NewMessageForm(initial=initial)

return render(request,'read.html',{'messages':messages,'form':form})

1 个答案:

答案 0 :(得分:2)

你可以这样做:

if messages.in_response_to :
    m = messages.in_response_to.id
    ...
else:
    ...