Ok. So... did you succeed in pre-selecting several values ?

Le 10/08/2011 16:29, Matthew Cahn a écrit :
Well, it's a thought, but despite the fact that I called the options of the select "option 1", "option 2", and "option 3" in my posting, it's a real project, and the item in the MultipleSelectField needs to allow multiple responses.

Matthew

On Tue, Aug 9, 2011 at 3:15 PM, Damien Accorsi <[email protected]> wrote:
By the way, if you are new to Tosca Widgets, I would recommend to start by using "simple" widgets like TextField, SingleSelectField, etc. The mechanisms are not always easy to understand, so the firsts steps should be to use simple widgets with static data, then go into complex widgets with dynamic data.

Le 09/08/2011 21:11, Damien Accorsi a écrit :
Matthew,

In your templates you should have something like this:
${tmpl_context.sample_form(ldPrefilledData, child_args=ldChildArgs)}

Where :
* ldPrefilledData is a dictionnary containing the preselected values
* ldChildArgs is a dictionnary containing the available values

In your case, you should have something like:
* ldChildArgs = { 'location': {'option 1', 'option 2', 'option 3'}}
* ldPrefilledData = { 'location': {'option 1', 'option 2'}}

This should work.

Damien

Le 09/08/2011 20:40, MHCPU a écrit :
I hope someone will tell me how to pass which options are selected
into a MultipleSelectField.  I can see that the values being passed
into update_params is a list of SQLAlchemy ORM objects.  It seems like
it needs to be a list of strings instead, but I'm not sure how to make
that happen.

Matthew

On Aug 9, 11:19 am, MHCPU <[email protected]> wrote:
Could someone tell me how to get the selections in a
MultipleSelectField to reflect the values coming from the database?
The selections get saved to the database fine, but they don't get set
in the form when I give the form an existing set of data.

For example, I have a Sample table, with a one-to-many relation to the
Location table. If the Location table has two records, with the
"some_attribute" field having the values "option 1" and "option 2", I
want those two options to be selected in the MultipleSelectField for
"some_attribute" when I display the form.

I'm not sure how the MultipleFieldSelect would even know that the data
is supposed to come from the "some_attribute" field of the Location
table, which is probably why it doesn't work.  When I create the
Sample object for insertion to the database,  I have to make a list of
Location objects and assign them to the new Sample.  Do I have to do
the reverse when I get a Sample from the database, in order to pass a
list to the form?  How would I pass it?

Any help appreciated.

 - Matthew

Tables:

class Sample(DeclarativeBase):
    __tablename__ = 'sample'
    id = Column(Integer, primary_key=True)
    sampleNumber = Column(Unicode, index=True, unique=True,
nullable=False)
    location = relation('Location', backref='sample',
order_by='Location.id')

class Location(DeclarativeBase):
    __tablename__ = 'location'
    id = Column(Integer, primary_key=True)
    sample_id = Column(Unicode, ForeignKey('sample.id'))
    some_attribute = Column(Unicode)

Form:

class SampleForm(TableForm, twd.CustomisedForm):
    ...
        location = MultipleSelectField('some_attribute',
options=['option 1', 'option 2', 'option 3'])

Controller:

class RootController(BaseController):

    @validate(sample_form.create_sample_form, error_handler=create)
    @expose()
    def create_sample(self, **kw):
        """Create a new sample record"""

        locationList = []
        for ll in kw['location']:
            newLocation = Location(some_attribute=ll)
            locationList.append(newLocation)

        new = Sample(
            sampleNumber = kw['sampleNumber'],
            location = locationList,
        )

        DBSession.add(new)

        flash( '''Added sample: %s'''%( kw['sampleNumber'], ))
        redirect( './index' )

    @expose('myproject.templates.update')
    def update(self, sampleNumber, **kw):
        """Display the form for updating a sample, with values from
the database."""

        tmpl_context.sample_form = sample_form.update_sample_form

        sample =
DBSession.query(Sample).filter_by(sampleNumber=sampleNumber).one()

        return dict(sample=sample)

--
You received this message because you are subscribed to the Google Groups "TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected].
For more options, visit this group at http://groups.google.com/group/turbogears?hl=en.



--
You received this message because you are subscribed to the Google Groups "TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected].
For more options, visit this group at http://groups.google.com/group/turbogears?hl=en.

Reply via email to