2009-12-16 4 views
3

Je viens de démarrer Django et Python il y a 50 heures ;-) donc ça peut être facile mais je suis bloqué. J'utilise une vue 'create' similaire avec une implémentation similaire de Form dans mon projet sans problème. Dans ce cas, je reçois l'erreur mentionnée ci-dessus.Erreur avec Django Utilisateur: "AttributeError: l'objet 'User' n'a pas d'attribut 'get'"

J'utilise Pinax ...

2 from django.shortcuts import render_to_response, get_object_or_404 
3 from django.template import RequestContext 
4 from django.http import HttpResponseRedirect 
5 from django.core.urlresolvers import reverse 
6 from django.contrib.auth.models import User 
7 from django.contrib.auth.decorators import login_required 
8 from django.utils.translation import ugettext_lazy as _ 
9 
10 from django.conf import settings 
11 
12 if "notification" in settings.INSTALLED_APPS: 
13  from notification import models as notification 
14 else: 
15  notification = None 
16 
17 from location.models import Location 
18 from location.forms import LocationForm, LocationUpdateForm 
19 
20 
21 @login_required 
22 def create(request, form_class=LocationForm, template_name="location/create.html"): 
23  location_form = form_class(request.user, request.POST or None) 
24 
25 
26  
27  if location_form.is_valid(): 
28   location = location_form.save(commit=False) 
29   location.creator = request.user 
30   location.save() 
31   return HttpResponseRedirect(location.get_absolute_url()) 
32  
33  return render_to_response(template_name, { 
34   "location_form": location_form, 
35  }, context_instance=RequestContext(request)) 

Traceback (most recent call last): 
    File "/Users/philgo20/code/LeadMiner/django/core/servers/basehttp.py", line 636, in __call__ 

    File "/Users/philgo20/code/LeadMiner/django/core/handlers/wsgi.py", line 241, in __call__ 

    File "/Users/philgo20/code/LeadMiner/django/core/handlers/base.py", line 134, in get_response 

    File "/Users/philgo20/code/LeadMiner/django/core/handlers/base.py", line 154, in handle_uncaught_exception 

    File "/Users/philgo20/code/LeadMiner/django/core/handlers/base.py", line 92, in get_response 

    File "/Users/philgo20/python/django/trunk/django/contrib/auth/decorators.py", line 78, in __call__ 
    return self.view_func(request, *args, **kwargs) 
    File "/Users/philgo20/code/jezam_kms/apps/location/views.py", line 27, in create 
    if location_form.is_valid(): 
    File "/Users/philgo20/code/LeadMiner/django/forms/forms.py", line 120, in is_valid 

    File "/Users/philgo20/code/LeadMiner/django/forms/forms.py", line 111, in _get_errors 

    File "/Users/philgo20/code/LeadMiner/django/forms/forms.py", line 234, in full_clean 

    File "/Users/philgo20/code/LeadMiner/django/forms/widgets.py", line 170, in value_from_datadict 

AttributeError: 'User' object has no attribute 'get' 

Répondre

8

Sur la ligne 23 de votre views.py vous passez request.user comme premier paramètre à l'instanciation de LocationForm.

Le premier paramètre doit être request.POST sauf si votre formulaire a remplacé la méthode __init__().

+0

Je n'ai pas fini de m'en débarrasser. Duh. Merci ;-) – philgo20