On Tue, Nov 1, 2011 at 4:40 PM, Jennifer Bell <jenniferlia...@yahoo.ca>wrote:
> def > __init__(self,data=None,files=None,initial={},first_update=False,user=None, > report=None): > if user and user.is_authenticated() and > UserProfile.objects.filter(user=user).exists(): > initial[ 'author' ] = user.first_name + " " + user.last_name > initial[ 'phone' ] = user.get_profile().phone > initial[ 'email' ] = user.email > > super(ReportUpdateForm,self).__init__(data,files=files,initial=initial) > > ----------------------------------------> > > ... I'm guessing because the 'initial' declaration in the form > constructor prototype is not on the stack, like I would have thought. > Changing the view to construct the ReportUpdateForm like so: > > "update_form": ReportUpdateForm(user=request.user, > initial={}), > This is a classic learning Python gotcha, see for example: http://www.ferg.org/projects/python_gotchas.html#contents_item_6 which describes the why in a fair amount of detail. You should really replace initial={} in the __init__ definition with initial=None and replace None with an empty dictionary inside the method body...otherwise you are relying on all ReportUpdateForm callers to do the right thing (that is, always specify initial, even though it's not "required") to prevent that default initial dictionary from getting modified. Karen -- http://tracey.org/kmt/ -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.