Or maybe an addition to the INPUT helper could turn...
INPUT(_type="text", name="contact_name", requires=[ IS_NOT_EMPTY(),
IS_LENGTH(255,error_message=T('name too long, max(255)')) ]
into
INPUT(from_model="db.CONTACTS.contact_name")
?
Sorry for blathering on BTW, I'm very excited by web2py - I've wanted
to ditch PHP for Python for years and I'm hoping this is the framework
that will allow me to do that! :)
Roger.
On Apr 4, 12:39 pm, "web2py <<<at>>> technicalbloke.com"
<[email protected]> wrote:
> Or is there a way to create something akin to an old fashioned
> 'database view' in the model, get SQLFORM to render that and then in
> the controller validate the fields and insert/update the fields
> manually?
>
> Roger.
>
> On Apr 4, 12:23 pm, "web2py <<<at>>> technicalbloke.com"
>
> <[email protected]> wrote:
> > I see that it's non-trivial but maybe 1,3 and 4 could be negated by
> > using the following syntax (2 I'm not so sure about)...
>
> > COMPOUNDFORM( db.TABLE1,db.TABLE2, db.TABLE3, fields=
> > [ db.TABLE1.name, db.TABLE2.email, db.TABLE3.phone ], relations
> > [ db.TABLE1.id==db.TABLE2.contact_id,
> > db.TABLE1.id==db.TABLE3.contact_id ] )
>
> > Anyway, if I can't use SQLFORM the issue for me now is how to achieve
> > this by other means. Is there a way to generate individual form fields
> > from the model such that the model's constraints are imposed on A) the
> > submitted values and B) the client side javascript? Or do I have to
> > duplicate these conditions at the controller level manually? Would it
> > be a good idea to use form_factory to build such a form?
>
> > Thanks,
>
> > Roger.
>
> > On Apr 4, 11:27 am, mdipierro <[email protected]> wrote:
>
> > > what you say could be implemented but it would not be general enough
> > > to satisfy every user.
> > > 1) why be limited to two tables
> > > 2) is this a one-to-one or one-to-many?
> > > 3) in which order the fields should be listed
> > > 4) what if the two tables have fiends with the same name
> > > ...
>
> > > there are many issue that make this a non-trivial problem. Eventually
> > > it will be done but requires some work.
>
> > > Massimo
>
> > > On Apr 4, 9:15 am, "[email protected]"
>
> > > <[email protected]> wrote:
> > > > Hi All,
>
> > > > I must be missing something, I've read the book's chapter on SQLFORM
> > > > and the bit about "Links to referencing records" but I still can't get
> > > > my head round how to make a compound form, i.e. one with fields from
> > > > multiple tables. Here's are my tables...
>
> > > > db.define_table('CONTACTS',
> > > > SQLField('contact_name','string',length=255, required=True),
> > > > SQLField('date_added','datetime', required=True)
> > > > )
> > > > db.CONTACTS.contact_name.requires=[ IS_NOT_EMPTY(), IS_LENGTH
> > > > (255,error_message=T('name too long, max(255)')) ]
> > > > db.CONTACTS.date_added.requires=[ IS_DATETIME() ]
>
> > > > db.define_table('EMAIL_ADDRESSES',
> > > > SQLField('contact_id',db.CONTACTS, required=True),
> > > > SQLField('email_address','string',length=255, required=True),
> > > > SQLField('the_default','boolean', default=False, required=True)
> > > > )
> > > > db.EMAIL_ADDRESSES.contact_id.requires=[ IS_IN_DB(db,
> > > > db.CONTACTS.id) ]
> > > > db.EMAIL_ADDRESSES.email_address.requires=IS_EMAIL()
>
> > > > This is my view...
>
> > > > def index():
> > > > cf1 = SQLFORM( db.CONTACTS )
> > > > if cf1.accepts(request.vars,session):
> > > > response.flash="Contact added."
> > > > return dict( form=cf1 )
>
> > > > The natural thing seemed to be to try:
> > > > cf1 = SQLFORM( db.CONTACTS, db.EMAIL_ADDRESSES )
> > > > but that barfed, so next I tried...
> > > > cf1 = SQLFORM( db.CONTACTS, db.EMAIL_ADDRESSES, fields=
> > > > ["contact_name","email_address"])
> > > > which barfs also. I also tried...
> > > > cf1 = SQLFORM( db.CONTACTS.id==db.EMAIL_ADDRESSES.contact_id,
> > > > fields="contact_name" )
> > > > with the same result.
>
> > > > Am I missing something small or am I going about it entirely the wrong
> > > > way?
>
> > > > Thanks,
>
> > > > Roger.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py Web Framework" 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/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---