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'
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.
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.
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.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With