Thanks v

What you said echoes what I found on a posting on djangosnippet.org
about populating the choices in the init field.  It works fine now.

On May 26, 9:30 am, V <viktor.n...@gmail.com> wrote:
> On May 25, 1:27 pm, Simon Davies <simon...@gmail.com> wrote:
>
>
>
> > I have a choices field called status in my model form which can be set
> > to a number of values, however the options available will be based on
> > its current state something like this, so it needs to refer to itself:
>
> > class ContractForm(ModelForm):
>
> > def getStatusChoices()
> >    if status == 'r':
> >             return (('C', 'Confirmed'), ('N', 'Cancelled))
> >   elif status == 'C':
> >             return (('M', 'Completed'), ('P', 'Paid'))
> >   ....
>
> >  status = fields.ChoiceField(choices=getStatusChoices())
>
> > I read in another thread that you can do this by accessing and setting
> > the self.fields['status'] which contains the status state  of the
> > current object and is created by the meta form class.  How do I access
> > self in the model function.  If i pass it in as a parameter to the
> > method as shown below what should the function call look like in the
> > status field, i.e. how do I refer to the current object to be passed.
>
> >         def getStatusChoices(self):
> >                 if not self.key:
> >                         self.fields['STATUS'] = (('R', 'Requested'),
> > ('C', 'Confirmed'))
> >                 elif self.fields['STATUS'] == 'R':
> >                         self.fields['STATUS'] = (('N', 'Cancelled'),
> > ('C', 'Confirmed'))
> >                 return self
>
> > Thanks
>
> > Simon
>
> Hi,
>
> it might help if you post a bit more from your form definition, but
> I'll try to answer. Take the following example:
>
> class MyForm(forms.Form):
>
>   status_choices = forms.ChoiceField(choices=(('0', 'False'),))
>
>   def __init__(self, *args, **kwargs):
>     super(MyForm, self).__init__(*args, **kwargs)
>     if kwargs.has_key('initial') and kwargs['initial'].has_key
> ('status'):
>       self.fields['status_choices'].choices = getStatusChoices(kwargs
> ['initial']['status']
>
> that is you would like to set the available choices for the
> status_choices field. You do this in the form's __init__ method. First
> you initialise the form as usual (see the super line), then you adjust
> the choices value of the status_choices field. Clearly, in my setting
> the getStatusChoices function should return a valid choices tuple.
>
> have a nice day
--~--~---------~--~----~------------~-------~--~----~
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