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 -~----------~----~----~----~------~----~------~--~---