To create one to many form i tried to follow the post from this guy http://blog.jotbe-fx.de/articles/2522/web2py-Normalized-many-to-many-model-with-multiselect-drop-down
Also to create the dropdown etc. The thing worked kind of but the problem was that my grid was not getting populated once you wanted to edit the new record etc. I got stuck here with these code. If anybody has some extra time to go trough and help me optimize it I would appreciate it otherwise I will go with normal list: reference field Thank you @auth.requires_login() def workers(): #za nekatere polja (w_user in W_organizacija) rabmo default vrednosti, ki jih ne more nastavljat uporabnik user = auth.user_id org = db(db.auth_user.id == user).select(db.auth_user.organization)[0]["organization"] db.workers.w_user.default = user db.workers.w_organisation.default = org #Load workers #workers = db((db.workers.w_organisation == 10) & (db.workers.w_status== db.status.id)).select(db.workers.id,db.workers.w_status, db.workers.w_organisation, db.workers.w_first_name, db.workers.w_last_name,\ # db.workers.w_nick_name,db.workers.w_email,db.status.s_code,db.workers.w_note) #print workers #####NAredimo grrid za šifrant delavcev #Define the query object. Here we are pulling all contacts having date of birth less than 18 Nov 1990 query = ((db.workers.w_organisation == org) & ((db.workers.w_status == 1) or (db.workers.w_status == 90))) query_inactive = db((db.workers.w_organisation == org) & (db.workers.w_status == 100)).select().as_list() #print query_inactive #Define the fields to show on grid. Note: (you need to specify id field in fields section in 1.99.2 fields = (#db.workers.id, db.workers.w_first_name, db.workers.w_last_name, #db.status.s_code, db.workers.w_nick_name, db.workers.w_email, db.workers_skills.skill, db.workers.w_note) #Let's specify a default sort order on date_of_birth column in grid default_sort_order=[db.workers.w_last_name] db.workers.w_organisation.readable = db.workers.w_user.readable = False db.workers.w_organisation.writable = db.workers.w_user.writable = False db.workers.w_organisation.editable = db.workers.w_user.editable = False #Nardiš polje bl text like :) WIU WIU db.workers.w_first_name.widget = SQLFORM.widgets.string.widget db.workers.w_last_name.widget = SQLFORM.widgets.string.widget db.workers.w_nick_name.widget = SQLFORM.widgets.string.widget db.workers.w_email.widget = SQLFORM.widgets.string.widget #VAlidatorji #db.workers.w_status.requires = IS_IN_DB(db,db.status.s_code) #tega sm rešu v db.py db.workers.w_nick_name.requires = [IS_NOT_EMPTY(error_message=T('Missing nick name'))] db.workers.w_first_name.requires = [IS_NOT_EMPTY(error_message=T('Missing first name'))] db.workers.w_email.requires = IS_EMAIL(error_message=T('Incorrect e-mail address')) #form = SQLFORM.smartgrid(db.workers,linked_tables=['status']) #Creating the grid object if (request.args) and (request.args[0] in ['viev', 'edit', 'new']): skills = [(r.id, r.sk_name) for r in db(db.skills).select()] grid_workers = SQLFORM.factory( db.workers, Field('w_status', type='integer', label= T('Status'), widget = SQLFORM.widgets.options.widget, default = 1), Field('w_first_name',type='text', label= T('First name'),represent=repr), Field('w_last_name',type='text', label= T('Last name'),represent=repr), Field('w_nick_name',type='text', label= T('Nick name'),represent=repr), Field('w_email',type='text', label= T('e-mail'),represent=repr), # Field('w_skills','list:reference skills',requires = IS_IN_DB(db,db.skills.id,'%(sk_name)s',multiple=True),label= T('Skills')), # Field('w_groups','list:reference groups',requires = IS_IN_DB(db,db.groups.id,'%(gr_name)s',multiple=True),label= T('Groups')), Field('skills',requires=IS_IN_SET(skills, multiple=True)), Field('w_note',type='text', label= T('Comment'),represent=repr)) # (3) Validate form data if grid_workers.process().accepted: # (4) Insert package worker_insert = db.workers.insert( **db.workers._filter_fields(grid_workers.vars)) if worker_insert and grid_workers.vars.skills: # (5) Insert component package associations worker = db(db.workers) for skills in grid_workers.vars.skills: existing_skill = db.skills(id) db.workers_skills.insert( skill=skills, worker=worker_insert ) response.flash = "New record created" else: grid_workers= SQLFORM.grid(query=query, left=db.status.on(db.workers.w_status == db.status.id), fields=fields, searchable=False, orderby=[db.workers.w_nick_name],create=True, deletable=False, editable=True, paginate=50, buttons_placement = 'right', showbuttontext = False, #oncreate=myfunction, ui = dict(widget='', header='', content='', default='', cornerall='', cornertop='', cornerbottom='', button='button btn btn-default', buttontext='buttontext button', buttonadd='icon plus icon-plus glyphicon glyphicon-plus', buttonback='icon leftarrow icon-arrow-left glyphicon glyphicon-arrow-left', buttonexport='icon downarrow icon-download glyphicon glyphicon-download', buttondelete='icon trash icon-trash glyphicon glyphicon-trash', buttonedit='icon pen icon-pencil glyphicon glyphicon-pencil', buttontable='icon rightarrow icon-arrow-right glyphicon glyphicon-arrow-right', buttonview='icon magnifier icon-zoom-in glyphicon glyphicon-eye-open', ), exportclasses = dict(csv_with_hidden_cols=False, html = False, tsv = False, tsv_with_hidden_cols=False, json = False)) # if (request.args) and (request.args[0] in ['view', 'edit', 'new']): # grid_workers.element('[title=Back]').parent['_href'] = URL('settings','workers') # # (1) Get available components #table.import_from_csv_file(file) #db.person.import_from_csv_file(open('test.csv', 'r')) formImport = SQLFORM.factory(Field('csvfile','upload',uploadfield=False)) formImport.process() if formImport.accepted: # import csv # fle = csv.reader(request.vars.csvfile.file.read().splitlines()) # line_count = sum(1 for row in fle) # print line_count # if line_count <= 100: try: db.workers.import_from_csv_file(request.vars.csvfile.file, delimiter=";") except: formImport.errors.csvfile = T('Invalid file format.') # else: # formImport.errors.csvfile = T('File is too big. Max 100 rows') return dict(grid_workers = grid_workers, inactive_workers = query_inactive, formImport=formImport) -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.