Damien,
Thanks for the reply, I really appreciate it. I'm a bit confused
though. In my template I was just passing in the whole ORM object:
<div py:replace="tmpl_context.sample_form(sample)">Input Form</div>
</div>
Is IdPrefilledData instead of "sample"?
And IdChildArgs seems to be the option list, but I already have that
from the initial definition of the Select. Do I need it again?
And finally, the syntax you suggested, e.g. 'location': {'option 1',
'option 2', 'option 3'}} doesn't quite make sense -- the inner thing
looks like a list, but it has curly braces. What did you intend?
Matthew
On Aug 9, 3:11 pm, Damien Accorsi <[email protected]> wrote:
> 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.