Hello, I'have a little problem with this code??

when I'l trying to put :
" def __init__(self, inputUser, *args, **kwargs):"
I have the following error :
__init__() takes at least 2 non-keyword arguments (1 given)

So, I suppose I need to set the inputUser in a specific place, but I
can' figure out where?

For information, I'm working with  the django admin site .

Any idea?

On 7 août, 03:28, Julián C. Pérez <jcp...@gmail.com> wrote:
> Bingo!!!
> :D
> I follow 
> this:http://oebfare.com/blog/2008/feb/23/changing-modelchoicefield-queryset/
> and now I'm happy with mi desired current user based queryset
> Thank you all!
>
> BTW, my form class finally looks like...
> ---
> class SendMessageForm(forms.Form):
>
>         recipientUser = ShowValidContactList
> (queryset=None,label=u'Send to')
>         messageSubject= forms.CharField(label=u'Subject')
>         messageContent = forms.CharField
> (label=u'Content',widget=forms.Textarea())
>
>         def __init__(self, inputUser, *args, **kwargs):
>                self.user= inputUser
>                super(SendMessageForm, self).__init__(*args, **kwargs)
>                self.fields['recipientUser'].queryset = # Anything with
> the current user, in this case 'self.user'
> ---
>
> On Aug 6, 11:14 am, Julián C. Pérez <jcp...@gmail.com> wrote:
>
> > Thanks for reply, Paulo
> > But if I...
> > ---
> > class SendMessageForm(forms.Form):
>
> >         recipientUser = ShowValidContactList(currentUser=self.user,
> > label=u'Send to')
> >         messageSubject= forms.CharField(label=u'Subject')
> >         messageContent = forms.CharField(label=u'Content',
> > widget=forms.Textarea())
>
> >         def __init__(self, inputUser, *args, **kwargs):
> >                self.user= inputUser
> >                super(SendMessageForm, self).__init__(*args, **kwargs)
> > ---
> > the 'recipientUser = ShowValidContactList(currentUser=self.user,
> > label=u'Send to')' raises error because of that 'self.user' ('self'
> > wouldn't be defined and be out of scope)
>
> > On Aug 6, 11:09 am, Paulo Almeida <igcbioinformat...@gmail.com> wrote:
>
> > > It doesn't have to be a callable, you can just do something like:
>
> > > recipientUser = ShowValidContactList(currentUser=self.currentUser)
>
> > > I never used that kwargs.pop function (I didn't know you could do that),
> > >  but I have code like this:
>
> > > class ExperimentForm(ModelForm):
> > >     """ Generate form to handle experiment information. """
> > >     def __init__(self, user, *args, **kwargs):
> > >         super(ExperimentForm, self).__init__(*args, **kwargs)
> > >         try:
> > >             preferences = Preferences.objects.get(user=user)
>
> > > That last 'user' is just what came from the function call in the view.
>
> > > - Paulo
>
> > > 2009/8/6 Julián C. Pérez <jcp...@gmail.com>
>
> > > > My real problem it that the field should looks like:
> > > > ---
> > > > recipientUser = ShowValidContactList(currentUser=_something_,
> > > > label=u'Send to')
> > > > ---
> > > > and if I have a form's init method like...
> > > > ---
> > > > def __init__(self, *args, **kwargs):
> > > >    self.currentUser = kwargs.pop('currentUser', None)
> > > >    super(SendMessageForm, self).__init__(*args, **kwargs)
> > > > ---
> > > > it won't change the current user already defined in the field
>
> > > > Now, I want to make something like...
> > > > ---
> > > > recipientUser = ShowValidContactList(currentUser=getCurrentUser,
> > > > label=u'Send to')
> > > > ---
> > > > where 'getCurrentUser' is a callable function similar to:
> > > > ---
> > > > def get_image_path(instance, filename):
> > > >    return 'photos/%s/%s' % (instance.id, filename)
>
> > > > class Photo(models.Model):
> > > >    image = models.ImageField(upload_to=get_image_path)
> > > > ---
> > > > how can I do that?
>
> > > > On Aug 6, 9:58 am, Daniel Roseman <dan...@roseman.org.uk> wrote:
> > > > > On Aug 6, 3:34 pm, Julián C. Pérez <jcp...@gmail.com> wrote:
>
> > > > > > Hi
> > > > > > I tried doing that...
> > > > > > But it does not work
> > > > > > For example, if I do something like...
> > > > > > ---
> > > > > > class SendMessageForm(forms.Form):
> > > > > >         recipientUser = ShowValidContactList(label=u'Send to')
> > > > > >         messageSubject= forms.CharField(label=u'Subject')
> > > > > >         messageContent = forms.CharField
> > > > > > (label=u'Content',widget=forms.Textarea())
> > > > > >         def __init__(self, currentUser):
> > > > > >                 self.currentUser = currentUser
> > > > > >                 super(SendMessageForm, self).__init__(*args, 
> > > > > > **kwargs)
> > > > > > ---
> > > > > > that init method in my custom form class won't change anything in 
> > > > > > the
> > > > > > already defined ShowValidContactList field
>
> > > > > Because you are clobbering the existing parameters to __init__. You
> > > > > should do it like this:
>
> > > > > def __init__(self, *args, **kwargs):
> > > > >     self.currentUser = kwargs.pop('currentUser', None)
> > > > >     super(SendMessageForm, self).__init__(*args, **kwargs)
>
> > > > > --
> > > > > DR.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to