notnull=True only works if there is a default value for the field. Moreover notnull and default must go into the Field(....,...) since they are needed at table creation time.
On Sep 15, 1:23 pm, Ramjee Ganti <[email protected]> wrote: > Hi All, > > I am trying to learn web2py by implementing the nerddinner example from > ASP.NET MVC. > > The following is the corresponding code in the model: > > db.define_table('dinners', > Field('title','string',length=50,required=True,notnull=True), > > Field('eventdate','datetime',required=True,notnull=True,requires=IS_DATETIME()), > > Field('description','text',required=True,notnull=True,requires=[IS_LENGTH(256),IS_NOT_EMPTY()]), > > Field('hostedby','string',length=20,required=True,notnull=True,requires=IS_NOT_EMPTY()), > > Field('contactphone','string',length=20,required=True,notnull=True,requires=IS_NOT_EMPTY()), > > Field('address','string',length=256,required=True,notnull=True,requires=IS_NOT_EMPTY()), > > Field('country','string',length=20,required=True,notnull=True,requires=IS_NOT_EMPTY()), > > Field('latitude','double',required=True,notnull=True,requires=IS_NOT_EMPTY()), > > Field('longitude','double',required=True,notnull=True,requires=IS_NOT_EMPTY()), > format='%(title)s' > ) > db.dinners.title.requires = > [IS_NOT_EMPTY(),IS_NOT_IN_DB(db,db.dinners.title)] > > db.define_table('rsvp', > Field('dinnerid',db.dinners), > > Field('attendeename','string',length=30,required=True,notnull=True,requires=IS_NOT_EMPTY()) > ) > db.rsvp.dinnerid.requires = IS_IN_DB(db,db.dinners.id,'%(title)s') > db.rsvp.dinnerid.notnull = True > > When I check in the database, I see that in the table 'rsvp', the field > 'dinnerid' is a nullable column (though I specifically set it to notnull in > the model code). I verified the behavior in both MSSQL Server and MySQL. > > Can you please clarify if this is a bug or a default behavior. If it is the > default behavior, why? > > Thanks, > rAm > > i Think, i Wait, i Fast -- Siddharthahttp://sodidi.ramjeeganti.com

