I almost got it to work with IS_IN_DB form_fields.append(Field('new_seller', 'integer', requires=IS_IN_DB(db((db.tracker_person_product.troop_person == db.troop_person.id) \ &(db.tracker_person_product.troop == troop.id) \ &(db.tracker_person_product.campaign == campaign.id)), 'troop_person.id','%(name)s%(surname)s' )))
But could not find a way to use the distinct sql switch to sort out all doubles. So instead I had to do it like this: ids = [] names = [] for person in new_persons: ids.append(person.id) names.append(str(person.name + " " + person.surname)) form_fields = [] form_fields.append(Field('new_seller', 'integer', requires=IS_IN_SET(ids, names))) Kenneth On Jul 19, 8:16 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > It would be great to have an app like pastebin for web2py models, > possibily using some convention to allow cooperation, and organized by > sector. > > On Jul 19, 1:51 am, Kenneth <kenneth.t.lundst...@gmail.com> wrote: > > > Here is the model för tracker_person_product that tracks sellings, if > > a person doesn´t have a entry in the tracker on an specific campaign > > he doesn´t belong to that campaign. > > Troop_person is the table where sellers a stored and well campaign is > > the campaign table. > > > db.define_table('tracker_person_product', > > db.Field('troop', db.troop, required=True), > > db.Field('troop_person', db.troop_person, required=True), > > db.Field('campaign', db.campaign, required=True), > > db.Field('product', db.product, required=True), > > db.Field('count_received', 'integer', required=True, > > requires=IS_INT_IN_RANGE(0, 1000000)), > > db.Field('count_sold', 'integer', required=True, > > requires=IS_INT_IN_RANGE(0, 1000000)), > > db.Field('count_returned', 'integer', required=True, > > requires=IS_INT_IN_RANGE(0, 1000000)), > > db.Field('count_paid', 'integer', required=True, > > requires=IS_INT_IN_RANGE(0, 1000000)), > > db.Field('edited_by', db[user_table], required=True), > > db.Field('edited_date', 'datetime', required=True)) > > > db.define_table('troop_person', > > db.Field('name', 'string', required=True), > > db.Field('troop', db.troop, required=True), > > db.Field('troop_group', db.troop_group, required=True), > > db.Field('reward_selected', 'integer', default=0), > > db.Field('edited_by', db[user_table], required=True), > > db.Field('edited_date', 'datetime', required=True), > > db.Field('surname', 'string', required=False)) > > > db.define_table('campaign', > > db.Field('title_fi', 'string', requires=IS_NOT_EMPTY()), > > db.Field('title_se', 'string', requires=IS_NOT_EMPTY()), > > db.Field('starts', 'date', requires=IS_DATE(format=T('%Y-%m-%d'), > > error_message=T('must be YYYY-MM-DD!'))), > > db.Field('ends', 'date', requires=IS_DATE(format=T('%Y-%m-%d'), > > error_message=T('must be YYYY-MM-DD!'))), > > db.Field('description_fi', 'text'), > > db.Field('description_se', 'text'), > > db.Field('hidden', 'boolean'), > > db.Field('district', db.district, default=0), > > db.Field('created_by', db[user_table], required=True), > > db.Field('created_date', 'datetime', required=True), > > db.Field('edited_by', db[user_table], required=True), > > db.Field('edited_date', 'datetime', required=True), > > db.Field('main', 'boolean', default=False)) > > > When polulating the tracker table form I use > > > person_data = db((db.tracker_person_product.troop_person == > > db.troop_person.id) > > &(db.tracker_person_product.troop == troop.id) \ > > &(db.tracker_person_product.campaign == campaign.id)) \ > > .select(db.troop_person.ALL, orderby=db.troop_person.name, > > distinct=True) > > > and when I want to find sellers not in the campaign I use > > > person_data = db((db.tracker_person_product.troop_person == > > db.troop_person.id) > > &(db.tracker_person_product.troop == troop.id) \ > > &(db.tracker_person_product.campaign != campaign.id)) \ > > .select(db.troop_person.ALL, orderby=db.troop_person.name, > > distinct=True) > > > Kenneth > > > On Jul 19, 2:40 am, "mr.freeze" <nat...@freezable.com> wrote: > > > > You could probably do it with IS_IN_DB depending on your model. I > > > would personally create a widget since they are more flexible and > > > intuitive to me. If you show your model then I can help you. > > > > On Jul 18, 6:27 pm, Kenneth <kenneth.t.lundst...@gmail.com> wrote: > > > > > Hello, > > > > > I have a case where I have a table of sellers, a table of campaigns > > > > and then a tracker to follow how much each seller is selling. All > > > > sellers are not in all campaigns, the tracker keeps track of witch > > > > seller belongs to which campaign. > > > > > To adminitrate this I´m trying to make a drop down list where I could > > > > select one och multiple sellers not in the campaign and add them to > > > > the campaign. > > > > > Is this possible with SQLFORM or SQLFORM.factory or any other ready > > > > function or do I have to make something myself? > > > > > Kenneth