Is there way create interaction between two selects in SQLFORM.
I have these tables in *tables.py*:
db.define_table(
'categories',
Field('PRIORITY','integer'),
migrate=False)
db.define_table(
't_categories_names',
Field('ID_CATEGORY','reference categories',writable=False,readable=False
),
Field('LANGUAGE','reference languages'),
Field('NAME',length=30),
primarykey=['ID_CATEGORY'],
migrate=False)
db.define_table(
'subcategories',
Field('ID_CATEGORY','reference categories'),
migrate=False)
db.define_table(
't_subcategories_names',
Field('ID_SUBCATEGORY','reference subcategories'),
Field('LANGUAGE','reference languages'),
Field('NAME',length=30,unique=True),
primarykey=['ID_SUBCATEGORY'],
migrate=False)
db.define_table(
'recipes',
Field('ID_SUBCATEGORY','reference subcategories'),
Field('IMAGE','upload'),
migrate=False)
I use SQLFORM with extra field for 'category' in controller default.py:
def addRecipe():
db.recipes.ID_SUBCATEGORY.requires = IS_IN_DB(db((db.
t_subcategories_names.ID_SUBCATEGORY == db.subcategories.id) & (db.
t_subcategories_names.LANGUAGE == auth.user.language)),db.
t_subcategories_names.ID_SUBCATEGORY,'%(NAME)s')
categories = {rec.categories.id:rec.t_categories_names.NAME for rec in
db((db.categories.id == db.t_categories_names.ID_CATEGORY) & (db.
t_categories_names.LANGUAGE == auth.user.language)).select(db.categories.id,
db.t_categories_names.NAME,orderby=db.categories.PRIORITY)}
form = SQLFORM(db.recipes,fields=['ID_SUBCATEGORY','IMAGE'],labels = {
'ID_SUBCATEGORY':T('Subcategory'),'IMAGE':T('Image')})
my_extra_element = DIV(
LABEL(
T('Category'),
_class='form-control-label col-sm-3'
),
DIV(
SELECT(
*[OPTION(value_, _value=key_) for key_, value_ in iter(
categories.items())],
_class='form-control'
),
_class='col-sm-9'
),
_class='form-group row'
)
form[0].insert(0,my_extra_element)
if form.process().accepted:
response.flash='Thanks for filling the form'
return dict(form=form)
I have result like on picture. As you can see if user have choosen 'Drinks'
select with subcategory contain all names for all categories.
P.S. I can do interaction between two selects with jquery, but I want to
know is there way do it with web2py tools like widget maybe with
autocomplete or options.widget.
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/web2py/5c38b608-088c-43e4-b9fc-9841a4cdfeff%40googlegroups.com.