JackRoster
JackRoster

Reputation: 1663

Django 'NoneType' object has no attribute 'id'

I'm trying to create an simple inbox-message app but I keep encountering this error.

I know the error is pointing here

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

What I'm trying to convey is , If their is an object in messages.in_response_to . Do this . I don't know how to fix it , I spent hours trying , can someone help me please

error

'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})

models.

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})

Upvotes: 0

Views: 2507

Answers (1)

Rohan
Rohan

Reputation: 53326

You can do:

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

Upvotes: 2

Related Questions