Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

object has no attribute 'get'

I can't find any solution to my issue with similar kind of error.

The error is when I try to edit object:

'Intention' object has no attribute 'get'

I have it in line with form.as_p:

{% extends "layout.html" %} {% block content %}     <form action="{{ form_url }}" method="post">{% csrf_token %}     {{ form.as_p }}     <input type="submit" value="Submit" />     </form> {% endblock %} 

controller code:

def edit(request, id):     if request.method == 'POST': # If the form has been submitted...         form = IntentionForm(request.POST) # A form bound to the POST data         if form.is_valid(): # All validation rules pass             # Process the data in form.cleaned_data             # ...             intention = form.save()             return HttpResponseRedirect(reverse_lazy('intention-show', args=[intention.id])) # Redirect after POST     else:         intention = Intention.objects.get(pk=id)         form = IntentionForm(intention) # An unbound form      return render_to_response('intentions/templates/form.html',                                  {'form': form, 'form_url': reverse_lazy('intention-edit', args=[intention.id])},                                  context_instance=RequestContext(request)                                ) 

Could someone give me any advice?

Trackback:

Environment:   Request Method: GET Request URL: http://127.0.0.1:8000/intentions/3/edit  Django Version: 1.4 Python Version: 2.7.3 Installed Applications: ('django.contrib.auth',  'django.contrib.contenttypes',  'django.contrib.sessions',  'django.contrib.sites',  'django.contrib.messages',  'django.contrib.staticfiles',  'intentions',  'django.contrib.admin') Installed Middleware: ('django.middleware.common.CommonMiddleware',  'django.contrib.sessions.middleware.SessionMiddleware',  'django.middleware.csrf.CsrfViewMiddleware',  'django.contrib.auth.middleware.AuthenticationMiddleware',  'django.contrib.messages.middleware.MessageMiddleware')   Template error: In template /home/marek/devel/django/prayer/intentions/templates/form.html, error at line 4    'Intention' object has no attribute 'get'    1 : {% extends "layout.html" %}      2 : {% block content %}      3 :  <form action="{{ form_url }}" method="post">{% csrf_token %}      4 :   {{ form.as_p }}       5 :  <input type="submit" value="Submit" />      6 :  </form>      7 : {% endblock %}      8 :   Traceback: File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response   111.                         response = callback(request, *callback_args, **callback_kwargs) File "/home/marek/devel/django/prayer/intentions/views.py" in edit   55.                                  context_instance=RequestContext(request)   File "/usr/local/lib/python2.7/dist-packages/django/shortcuts/__init__.py" in render_to_response   20.     return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs) File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py" in render_to_string   176.         return t.render(context_instance) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render   140.             return self._render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _render   134.         return self.nodelist.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render   823.                 bit = self.render_node(node, context) File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node   74.             return node.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in render   123.         return compiled_parent._render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _render   134.         return self.nodelist.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render   823.                 bit = self.render_node(node, context) File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node   74.             return node.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in render   62.             result = block.nodelist.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render   823.                 bit = self.render_node(node, context) File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node   74.             return node.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render   84.             output = self.filter_expression.resolve(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in resolve   571.                 obj = self.var.resolve(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in resolve   721.             value = self._resolve_lookup(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _resolve_lookup   772.                             current = current() File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in as_p   238.             errors_on_separate_row = True) File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in _html_output   143.         top_errors = self.non_field_errors() # Errors that should be displayed above all fields. File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in non_field_errors   246.         return self.errors.get(NON_FIELD_ERRORS, self.error_class()) File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in _get_errors   115.             self.full_clean() File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in full_clean   270.         self._clean_fields() File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in _clean_fields   281.             value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name)) File "/usr/local/lib/python2.7/dist-packages/django/forms/widgets.py" in value_from_datadict   205.         return data.get(name, None)  Exception Type: AttributeError at /intentions/3/edit Exception Value: 'Intention' object has no attribute 'get' 
like image 281
keram Avatar asked Jul 26 '12 11:07

keram


People also ask

What does object has no attribute mean in Python?

It's simply because there is no attribute with the name you called, for that Object. This means that you got the error when the "module" does not contain the method you are calling.

Has no attribute replace Python?

The Python "AttributeError: 'list' object has no attribute 'replace'" occurs when we call the replace() method on a list instead of a string. To solve the error, call replace() on a string, e.g. by accessing the list at a specific index or by iterating over the list.

Has no attribute append Python?

The Python "AttributeError: 'NoneType' object has no attribute 'append'" occurs when we try to call the append() method on a None value, e.g. assignment from function that doesn't return anything. To solve the error, make sure to only call append() on list objects.

How do you fix attribute errors in Python?

Solution for AttributeError Errors and exceptions in Python can be handled using exception handling i.e. by using try and except in Python. Example: Consider the above class example, we want to do something else rather than printing the traceback Whenever an AttributeError is raised.


1 Answers

Your problem is here:

intention = Intention.objects.get(pk=id) form = IntentionForm(intention) # An unbound form 

The first argument to a form is the data but you are passing the instance. To properly pass the instance you should use:

intention = Intention.objects.get(pk=id) form = IntentionForm(instance=intention) # An unbound form 
like image 104
Mark Lavin Avatar answered Sep 19 '22 08:09

Mark Lavin