Thank you very much, Anthony! This was exactly what i was looking for.
Problem solved.
Op vrijdag 11 mei 2012 19:07:32 UTC+2 schreef Anthony het volgende:
>
> Are you trying to auto-complete a reference field, and you want to be able
> to add new records to the referenced table? The built-in autocomplete
> widget doesn't handle that out of the box, but upon submission, you could
> check the request variables, and if the submitted value doesn't belong to
> an existing record in the referenced table, you could do an insert:
>
> Model:
>
> db.define_table('category', Field(name))
>
> db.define_table('article',
> Field('title'),
> Field('body', 'text'),
> Field('category', db.category,
> widget=SQLFORM.widgets.autocomplete(request,
> db.category.name,id_field
> =db.category.id)))
>
> Controller:
>
> def myfunction():
> if request.post_vars._autocomplete_name_aux and not request.post_vars.
> category:
> request.post_vars.category = db.category.insert(name=request.
> post_vars._autocomplete_name_aux)
> return dict(form=SQLFORM(db.article).process())
>
> When you use the autocomplete widget on a reference field, it submits the
> display value in a special field named
> _autocomplete_[display_field_name]_aux, and the actual field value is the
> record ID of the referenced record associated with the display value.
> However, if you enter and submit a display value that does not have an
> associated record in the referenced table, the reference field value will
> simply be empty (though the _autocomplete_..._aux field will contain the
> submitted display value).
>
> For example, when submitting a new article, suppose you enter
> "programming" in the category input field, but "programming" does not yet
> exist in the db.category table. In that case, request.post_vars.category
> will be empty, and request.post_vars._autocomplete_name_aux will contain
> the word "programming". In that case, the above code inserts "programming"
> into the db.category table and stores the new record ID in
> request.post_vars.category. When the form is then processed, the new
> db.article record will be created, with the new db.category record ID
> stored in the db.article.category field.
>
> Perhaps the autocomplete widget should handle this automatically (with an
> optional setting).
>
> Anthony
>
> On Thursday, May 10, 2012 12:44:51 PM UTC-4, gfdgdgfdg wrote:
>>
>> Hello everyone,
>>
>> I'm looking for a way to get an auto-complete field combined with adding
>> non-existing item to the DB. I've seen a website which
>> uses this functionality (demo: http://www.tellmehow.nl/video.html )
>>
>> I have already tried SELECT_OR_ADD_OPTION but i don't like drop-downs...
>>
>> Thanks in advance!
>> Remco
>
>
Op vrijdag 11 mei 2012 19:07:32 UTC+2 schreef Anthony het volgende:
>
> Are you trying to auto-complete a reference field, and you want to be able
> to add new records to the referenced table? The built-in autocomplete
> widget doesn't handle that out of the box, but upon submission, you could
> check the request variables, and if the submitted value doesn't belong to
> an existing record in the referenced table, you could do an insert:
>
> Model:
>
> db.define_table('category', Field(name))
>
> db.define_table('article',
> Field('title'),
> Field('body', 'text'),
> Field('category', db.category,
> widget=SQLFORM.widgets.autocomplete(request,
> db.category.name,id_field
> =db.category.id)))
>
> Controller:
>
> def myfunction():
> if request.post_vars._autocomplete_name_aux and not request.post_vars.
> category:
> request.post_vars.category = db.category.insert(name=request.
> post_vars._autocomplete_name_aux)
> return dict(form=SQLFORM(db.article).process())
>
> When you use the autocomplete widget on a reference field, it submits the
> display value in a special field named
> _autocomplete_[display_field_name]_aux, and the actual field value is the
> record ID of the referenced record associated with the display value.
> However, if you enter and submit a display value that does not have an
> associated record in the referenced table, the reference field value will
> simply be empty (though the _autocomplete_..._aux field will contain the
> submitted display value).
>
> For example, when submitting a new article, suppose you enter
> "programming" in the category input field, but "programming" does not yet
> exist in the db.category table. In that case, request.post_vars.category
> will be empty, and request.post_vars._autocomplete_name_aux will contain
> the word "programming". In that case, the above code inserts "programming"
> into the db.category table and stores the new record ID in
> request.post_vars.category. When the form is then processed, the new
> db.article record will be created, with the new db.category record ID
> stored in the db.article.category field.
>
> Perhaps the autocomplete widget should handle this automatically (with an
> optional setting).
>
> Anthony
>
> On Thursday, May 10, 2012 12:44:51 PM UTC-4, gfdgdgfdg wrote:
>>
>> Hello everyone,
>>
>> I'm looking for a way to get an auto-complete field combined with adding
>> non-existing item to the DB. I've seen a website which
>> uses this functionality (demo: http://www.tellmehow.nl/video.html )
>>
>> I have already tried SELECT_OR_ADD_OPTION but i don't like drop-downs...
>>
>> Thanks in advance!
>> Remco
>
>