Reputation: 1663
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
Reputation: 53326
You can do:
if messages.in_response_to :
m = messages.in_response_to.id
...
else:
...
Upvotes: 2