Thanks, that got rid of my problem with a false value for the boolean.
====================================================================
# coding: utf8
# define a SQLite database
database=SQLDB("sqlite://database.db")
# create a vendor table
database.define_table('vendor',
database.Field('name', 'string', length=64, unique=True),
database.Field('alias', 'string', length=16, unique=True),
database.Field('url', 'string', length=128, unique=True),
database.Field('logo', 'upload'),
database.Field('active', 'boolean')
)
database.vendor.name.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database,
database.vendor.name)]
database.vendor.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database,
database.vendor.name),IS_NOT_IN_DB(database, database.vendor.alias)]
database.vendor.url.requires=[IS_NOT_EMPTY()]
database.vendor.logo.requires=[IS_NOT_EMPTY()]
database.vendor.active.requires=[IS_NOT_EMPTY()]
database.define_table('distro',
database.Field('vendor_id', database.vendor),
database.Field('name', 'string', length=64, unique=True),
database.Field('alias', 'string', length=16, unique=True),
database.Field('active', 'boolean')
)
database.distro.vendor_id.requires=IS_IN_DB(database,database.vendor.id
,'%(name)s')
database.distro.name.requires=[IS_NOT_EMPTY()]
database.distro.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database,database.distro.alias)]
database.distro.active.requires=[IS_NOT_EMPTY()]
database.define_table('release',
database.Field('distro_id', database.distro),
database.Field('version', 'string', length=16, unique=True),
database.Field('alias', 'string', length=16, unique=True),
database.Field('active', 'boolean', default=True)
)
database.release.distro_id.requires=IS_IN_DB(database,database.distro.id
,'%(name)s')
database.release.version.requires=[IS_NOT_EMPTY()]
database.release.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database,database.release.alias)]
====================================================================
My the tables are still not being defined as i would expect.
====================================================================
timestamp: 2009-08-10T11:15:24.393714
CREATE TABLE vendor(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name CHAR(32),
alias CHAR(32),
url CHAR(32),
logo CHAR(32),
active CHAR(32)
);
success!
timestamp: 2009-08-10T11:15:24.411343
CREATE TABLE distro(
id INTEGER PRIMARY KEY AUTOINCREMENT,
vendor_id CHAR(32),
name CHAR(32),
alias CHAR(32),
active CHAR(32)
);
success!
timestamp: 2009-08-10T11:15:24.423518
CREATE TABLE release(
id INTEGER PRIMARY KEY AUTOINCREMENT,
distro_id CHAR(32),
version CHAR(32),
alias CHAR(32),
active CHAR(32)
);
success!
====================================================================
On Tue, Aug 11, 2009 at 10:00 AM, Don <[email protected]> wrote:
>
> I have defined my model.
>
> ====================================================
> # coding: utf8
> # define a SQLite database
> database=SQLDB("sqlite://database.db")
>
> # create a vendor table
> database.define_table('vendor',
> database.Field('name'),
> database.Field('alias'),
> database.Field('url'),
> database.Field('logo'),
> database.Field('active')
> )
>
> database.vendor.name.type='string'
> database.vendor.name.length=64
> database.vendor.name.unique=True
> database.vendor.name.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database,
> database.vendor.name)]
>
> database.vendor.alias.type='string'
> database.vendor.alias.length=16
> database.vendor.alias.unique=True
> database.vendor.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database,
> database.vendor.name),IS_NOT_IN_DB(database, database.vendor.alias)]
>
> database.vendor.url.type='string'
> database.vendor.url.length=128
> database.vendor.url.requires=[IS_NOT_EMPTY()]
>
> database.vendor.logo.type='upload'
> database.vendor.logo.requires=[IS_NOT_EMPTY()]
>
> database.vendor.active.type='boolean'
> database.vendor.active.requires=[IS_NOT_EMPTY()]
>
>
> database.define_table('distro',
> database.Field('vendor_id'),
> database.Field('name'),
> database.Field('alias'),
> database.Field('active')
> )
>
> database.distro.vendor_id.type='database.vendor'
> database.distro.vendor_id.requires=IS_IN_DB
> (database,database.vendor.id,'%(name)s')
>
> database.distro.name.type='string'
> database.distro.name.length=64
> database.distro.name.unique=True
> database.distro.name.requires=[IS_NOT_EMPTY()]
>
> database.distro.alias.type='string'
> database.distro.alias.length=16
> database.distro.alias.unique=True
> database.distro.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB
> (database,database.distro.alias)]
>
> database.distro.active.type='boolean'
> database.distro.active.requires=[IS_NOT_EMPTY()]
>
> database.define_table('release',
> database.Field('distro_id'),
> database.Field('version'),
> database.Field('alias'),
> database.Field('active')
> )
>
> database.release.distro_id.type='database.distro'
> database.release.distro_id.requires=IS_IN_DB
> (database,database.distro.id,'%(name)s')
>
> database.release.version.type='string'
> database.release.version.length=16
> database.release.version.unique=True
> database.release.version.requires=[IS_NOT_EMPTY()]
>
> database.release.alias.type='string'
> database.release.alias.length=16
> database.release.alias.unique=True
> database.release.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB
> (database,database.release.alias)]
>
> database.release.active.type='boolean'
> database.release.active.default=True
> =========================================
>
>
> When I look at sql.log I see
>
> =========================================
> timestamp: 2009-08-10T11:15:24.393714
> CREATE TABLE vendor(
> id INTEGER PRIMARY KEY AUTOINCREMENT,
> name CHAR(32),
> alias CHAR(32),
> url CHAR(32),
> logo CHAR(32),
> active CHAR(32)
> );
> success!
> timestamp: 2009-08-10T11:15:24.411343
> CREATE TABLE distro(
> id INTEGER PRIMARY KEY AUTOINCREMENT,
> vendor_id CHAR(32),
> name CHAR(32),
> alias CHAR(32),
> active CHAR(32)
> );
> success!
> timestamp: 2009-08-10T11:15:24.423518
> CREATE TABLE release(
> id INTEGER PRIMARY KEY AUTOINCREMENT,
> distro_id CHAR(32),
> version CHAR(32),
> alias CHAR(32),
> active CHAR(32)
> );
> success!
> =========================================
>
> Is it normal for my specifications to be ignored? Also, via the
> database administration page, I can set the active field of a record
> to "True" but not "False". If I try to change something to "False" I
> get "invalid length!".
>
> What am I doing wrong?
>
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py-users" 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
-~----------~----~----~----~------~----~------~--~---