Does it work if you set db.supplier_contacts.supplier_id.writable = True in 
the controller function?

On Friday, August 26, 2011 11:12:31 AM UTC-4, Cliff wrote:
>
> Massimo, 
>
> Thank you. 
>
> Of course. 
>
> Here are are the real table defs: 
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
> ++++++++++ 
> db.define_table('purchase_orders', 
>     Field('issue_date', 'date'), 
>     Field('number', length=24, requires=IS_NOT_EMPTY(), 
>           required=True, notnull=True, comment='Required'), 
>     Field('supplier', db.suppliers), 
>     Field('shipto', db.locations, label='Ship To'), 
>     Field('billto', db.locations, label='Bill To'), 
>     Field('del_terms', db.del_terms, label='Delivery Terms'), 
>     Field('currency', db.currencies), 
>     Field('pmt_terms', db.pmt_terms, label='Payment Terms'), 
>     Field('project_no', length=12, label='Project Number'), 
>     Field('taxable', 'list:string', default='No'), 
>     Field('po_contact', db.contacts, 
>             label='Purchase Order Contact'), 
>     Field('ap_contact',  db.contacts, 
>             label='Accounts Payable Contact'), 
>     Field('vendor_rep',  db.contacts, 
>             label='Vendor Representative'), 
>     Field('documentation_required', 'list:reference documentation', 
>             comment='Click to select.  Use Ctrl key for multiple 
> selection.') 
>     ) 
> db.purchase_orders.taxable.requires = IS_IN_SET(['Yes', 'No']) 
> db.purchase_orders.shipto.requires = IS_IN_DB(db, db.locations.id, '% 
> (name)s', 
>         zero='Choice required') 
> db.purchase_orders.billto.requires = IS_IN_DB(db, db.locations.id, '% 
> (name)s', 
>         zero='Choice required') 
> db.purchase_orders.supplier.requires = IS_IN_DB(db, db.suppliers.id, '% 
> (name)s', 
>         zero='Choice required') 
> db.purchase_orders.del_terms.requires = IS_IN_DB(db, db.del_terms.id, 
> '%(name)s', 
>         zero='Choice required') 
> db.purchase_orders.currency.requires = IS_IN_DB(db, db.currencies.id, 
> '%(name)s', 
>         zero='Choice required') 
> db.purchase_orders.pmt_terms.requires = IS_IN_DB(db, db.pmt_terms.id, 
> '%(name)s', 
>         zero='Choice required') 
> db.purchase_orders.po_contact.requires = IS_IN_DB( 
>         db(), db.contacts.id, '%(first_name)s, %(middle_name)s, % 
> (last_name)s, %(generation)s ', 
>         zero='Choice required') 
> db.purchase_orders.ap_contact.requires = IS_IN_DB( 
>         db(), db.contacts.id, '%(first_name)s', 
>         zero='Choice required') 
> db.purchase_orders.vendor_rep.requires = IS_IN_DB( 
>         db(), db.supplier_contacts.id, '%(first_name)s', 
>         zero='Choice required') 
>
> db.define_table('suppliers', 
>     Field('name', length=256, required=True, notnull=True), 
>     Field('address', length=64), 
>     Field('address_2', length=64), 
>     Field('city', length=32), 
>     Field('state', length=24), 
>     Field('zip', length=18), 
>     Field('website', length=512, requires=IS_URL()), 
>     format = '%(name)s' 
>     ) 
>
>
> db.define_table( 
>     'supplier_contacts', 
>     Field('supplier_id', db.suppliers), 
>     Field('first_name', length=32, required=True, notnull=True), 
>     Field('middle_name', length=32), 
>     Field('last_name', length=32, required=True, notnull=True), 
>     Field('generation', length=16), 
>     Field('email', length=512, 
>           requires=IS_EMPTY_OR(IS_EMAIL('invalid email'))), 
>     Field('mobile', length=18, label='Mobile phone'), 
>     Field('land_line', length=18), 
>     Field('fax', length=18), 
>     format='%(first_name)s, %(middle_name)s, %(last_name)s, % 
> (generation)s' 
>     ) 
> db.supplier_contacts.supplier_id.requires = IS_IN_DB( 
>     db, db.suppliers.id, '%(name)s', zero='Choose' 
>     ) 
> db.supplier_contacts.supplier_id.readable = False 
> db.supplier_contacts.supplier_id.writable = False 
>
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
> ++++++++++++++++++++++++++++++++++ 
>
> This is the actual call from the controller: 
>             # we already know the supplier_id and vendor_rep 
>             hidden['supplier']=supplier_id 
>             hidden['vendor_rep'=vendor_rep 
>             field_lst = 'issue_date number shipto billto del_terms 
> currency pmt_terms project_no taxable po_contact ap_contact 
> documentation_required'.split(' ') 
>             form = SQLTABLE(db.suppliers, fields=field_lst, 
> hidden=hidden) 
>
>
>
> On Aug 26, 8:39 am, Massimo Di Pierro <massimo....@gmail.com> 
> wrote: 
> > Can I see the model? 
> > 
> > On Aug 26, 4:43 am, Cliff <cjk...@gmail.com> wrote: 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > > I use SQLFORM something like this: 
> > 
> > > fields = 'dog_name dog_weight dog_birtdate'.split(' ') 
> > > hidden = {'dog_owner' : some_known_value} # We already know who the 
> > > owner is 
> > > SQLFORM(db.dogs, fields=fields, hidden=hidden) 
> > 
> > > The hidden fields are on the form.  When I submit the form, they are 
> > > in request.vars, but SQLFORM does not insert them in the database. 
> > 
> > > Is this the way it's supposed to work or do I have a bug? 
> > 
> > > Thanks, 
> > > Cliff Kachinske

Reply via email to