Hi Massimo,
Thanks for the clarification. I was playing around with the code and I
posted the wrong one, but even with notnull and a default value the behavior
is the same:
db.define_table('rsvp',
Field('dinnerid',db.dinners,notnull=True,default=1),
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')
Does it mean that a foreign key cannot be made notnull from model? if it
cannot be set why?
if it can be, how to do it?
rAm
i Think, i Wait, i Fast -- Siddhartha
http://sodidi.ramjeeganti.com
On Wed, Sep 15, 2010 at 11:59 PM, mdipierro <[email protected]> wrote:
> 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
>