Oh, How that happernd. I'm using new groups. It have advanced edit field. Hides links. For me it doesn't show links
anyways, code without links follows. (*But, I'll be more than happy, if I can go with a custom form.* ** *Only thing that I don't know in that case, is how to deal with upload field and make it into db.)* db.define_table('languages', Field('full', 'string', length=30, notnull=True, required=True), Field('short', 'string', length=10 , notnull=True, required=True), Field('natural', 'string', length=30), format='%(full)s - %(short)s') db.define_table('words', Field('word', 'string', notnull=True, required=True), Field('lang', db.languages, notnull=True, writable=False), Field('entry_by', db.auth_user, notnull=True, readable=False, writable=False)) db.define_table('pictures', Field('image', 'upload', notnull=True, required=True, label='Visual Lingua'), Field('word', 'list:reference words', readable=False, writable=False, required=True), Field('total', 'integer', readable=False, writable=False, default=2), Field('clicks', 'integer', readable=False, writable=False, default=1), Field('rating', 'double', readable=False, writable=False, compute=lambda row: row['total']/row['clicks']), Field('entry_by', db.auth_user, notnull=True, readable=False, writable=False)) db.languages.full.requires = [IS_NOT_EMPTY(), IS_NOT_IN_DB(db, 'languages.full')] db.languages.short.requires = [IS_NOT_EMPTY(), IS_NOT_IN_DB(db, 'languages.short')] db.languages.natural.requires = [IS_NOT_IN_DB(db, 'languages.natural')] db.words.word.requires = IS_NOT_EMPTY() db.words.lang.requires = IS_IN_DB(db, 'languages.id') db.words.entry_by.requires = [IS_IN_DB(db, 'auth_user.id')] db.pictures.image.requires = [IS_NOT_EMPTY(), IS_LENGTH(262144, 4096), IS_IMAGE(minsize=(60, 60))] #min_size 4kb, max_size 256kb; min_width 60px min_height 60px db.pictures.entry_by.requires = [IS_IN_DB(db, 'auth_user.id')]