Ok, [SOLVED] the problem.

I ended up having this in my data model

db.define_table('table', Field('category', length=1))

db.category.requires = IS_IN_SET(('g', 'c', 'd', 'a'), ('good', 'calm',
'damaged', 'acting'), multiple=True)

The problem was setting the length in a multiple text record.

-Thadeus




On Mon, Nov 2, 2009 at 2:58 PM, mdipierro <mdipie...@cs.depaul.edu> wrote:

>
> please send it to me
>
> On Nov 2, 2:18 pm, Thadeus Burgess <thade...@thadeusb.com> wrote:
> > I have not yet had a chance to test if the insertion is fixed or not.
> >
> > However I get the error using appadmin, and the reference field is the
> only
> > new field. The field is a text box with the person id in it.
> >
> > I can give more details privately.
> >
> > -Thadeus
> >
> > On Mon, Nov 2, 2009 at 2:14 PM, mdipierro <mdipie...@cs.depaul.edu>
> wrote:
> >
> > > Is this not fixed in trunk?
> >
> > > On Nov 2, 2:06 pm, Thadeus Burgess <thade...@thadeusb.com> wrote:
> > > > Massimo, what would that traceback be referring to?
> >
> > > > Would you need some code to look at?
> >
> > > > I still get the traceback when attempting to update a record using
> > > appadmin.
> >
> > > > -Thadeus
> >
> > > > On Sat, Oct 31, 2009 at 11:13 PM, mdipierro <mdipie...@cs.depaul.edu
> >
> > > wrote:
> >
> > > > > No but you have a good point. it should. In trunk now. Please give
> it
> > > > > a try.
> >
> > > > > Massimo
> >
> > > > > On Oct 31, 11:58 pm, Thadeus Burgess <thade...@thadeusb.com>
> wrote:
> > > > > > Yes I was in a rush to get to a Halloween party, ok here is
> sample
> > > code.
> >
> > > > > > db.define_table('person', Field('name'), Field('address'),
> > > > > > Field('referred_by', 'reference person'))
> >
> > > > > > So when a person fills out a form, they enter the name of the
> person
> > > that
> > > > > > referred them, I do a query, and insert that record in the field
> >
> > > > > > .....
> >
> > > > > > SQLFORM.factory(db.person.fields....)
> >
> > > > > > if form.accepts(....):
> > > > > >      referrer = db(db.person.name ==
> > > > > > request.vars.referred_by.capitalize()).select().first()
> > > > > >      db.person.insert(name=request.vars.name,
> > > > > address=request.vars.address,
> > > > > > referred_by=referrer)
> >
> > > > > > WIth this code, that exception is thrown, every single time.
> >
> > > > > > However if i did
> >
> > > > > >     if referrer:
> > > > > >          referrer = referrer.id
> > > > > >     else: referrer = None
> >
> > > > > > It works correctly.
> >
> > > > > > I was under the assumption that with the new DAL features in
> 1.70.1
> > > that
> > > > > the
> > > > > > former code would have worked? Am I mistaken and still have to
> > > reference
> > > > > it
> > > > > > by id when inserting new records?
> >
> > > > > > -Thadeus
> >
> > > > > > On Sat, Oct 31, 2009 at 11:44 PM, mdipierro <
> mdipie...@cs.depaul.edu
> >
> > > > > wrote:
> >
> > > > > > > I do not understand your test.
> >
> > > > > > > On Oct 31, 7:15 pm, Thadeus Burgess <thade...@thadeusb.com>
> wrote:
> > > > > > > > I am attempting to use the new DAL feature, where you can do
> a
> > > > > select,
> > > > > > > > and take the first row and insert that row into the reference
> > > column
> > > > > > > > of the database as a reference.
> >
> > > > > > > > I get the following error. This is fixed by just referencing
> > > row.id.
> >
> > > > > > > > Did I misunderstand, this new feature was for inserts as well
> as
> > > just
> > > > > > > selecting?
> >
> > > > > > > > Traceback (most recent call last):
> >
> > > > > > > >   File "gluon/restricted.py", line 184, in restricted
> >
> > > > > > > >     exec ccode in environment
> > > > > > > >   File line 238, in <module>
> >
> > > > > > > >   File ** "gluon/globals.py", line 103, in <lambda>
> >
> > > > > > > >     self._caller = lambda f: f()
> >
> > > > > > > >   File ** line 214, in controller
> >
> > > > > > > >     referred_by=referred_by, ### THIS IS THE ROW RETURNED BY
> > > > > > > > db...select().first(), this is fixed by just referencing .id
> > > > > > > >   File "gluon/sql.py", line 1681, in insert
> >
> > > > > > > >     self._db._execute(query)
> >
> > > > > > > >   File "gluon/sql.py", line 838, in <lambda>
> >
> > > > > > > >     self._execute = lambda *a, **b: self._cursor.execute(*a,
> **b)
> > > > > > > > DataError: value too long for type character varying(1)
> >
> > > > > > > > -Thadeus
> >
> >
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to