Here is my goal. I have multiple drop down forms populated with the
unique values available per field. I want to add a default ALL value
to them.
I then want to be able to take those values from the form and do a
selection based off those variables. I can't seem to be able to
select all values per given field oddly using the == query. i have to
use the db.field.All selection. I get there by using if statements,
if the variable is equal to ALL. I have come up with some workable
code but it is very ugly and uses multiple if statements and the
manual addition of an 'ALL' value in the sets. I know there has to
be a better way.
So how do I add default ALL selections to drop downs, and how can I
do a multiple db selection using those variables. Here is example
code.
##model
db.define_table('aa', Field('name'),
Field( 'color','string',label ='color'),
Field('weight','integer')
)
##controller
def searchdbanddisplay():
var1 = request.vars.col
var2 = request.vars.weight
ra = db(db.aa.color==var1).select()
wa = db(db.aa.weight==var2).select()
####I want to insert one call to db here instead of the top 2 lines to
search for both variables, I am presuming using AND and also
incorporate the ALL variable if it is selected?
return dict(message=T('Hello World'),var1 = var1,var2 =
var2,ra=ra,wa=wa)
def formtry():
from sets import Set
ra = db().select(db.aa.color, distinct=True)
SA = Set()
for row in ra:
SA.add(row.color)
##ra = db().select(db.aa.color, distinct=True)
wa = db().select(db.aa.weight, distinct =True)
WA = Set()
for row in wa:
WA.add(row.weight)
##form = SQLFORM.factory(SQLField('color', label='Select a
service'), requires=IS_IN_DB(db,'aa.color'))
form = SQLFORM.factory(
Field('color', requires=IS_IN_SET(SA)),
Field('weight',requires=IS_IN_SET(WA))
)
if form.accepts(request.vars, session):
response.flash = 'form accepted'
redirect(URL('index',vars
={'col' :request.vars.color,'weight' :request.vars.weight}))
return dict(form = form,vabla = session.vars)