Hi Annet

Seems strange that you are creating a form for a real table by using
SQLFORM.factory.  Why do that, rather than create a normal form?  If
you created a normal form,  I suspect the issue would be resolved.

You don't show the model or validators,  so can't comment on those.

Regards, D

On Mar 7, 9:17 am, annet <[email protected]> wrote:
> In db.py I defined the following table:
>
> db.define_table('company',
>     Field('name',length=54,default='',notnull=True),
>     Field('CoC_number',length=8),
>     Field('subdossiernumber',length=4,default='0000'),
>     ...
>     Field(...),
>     migrate=False)
>
> db.company.CoC_number.requires=IS_NOT_IN_DB(db(db.company.subdossiernumber==request.vars.subdossiernumber),db.company.CoC_number,error_message='combination
> of CoC-number and subdossiernumber already in database')
>
> In a controller I defined one form to update multiple tables. Here are
> the parts related to the company table:
>
> def update():
>     id= request.args(0)
>     ### retrieve company data
>     company=db(db.company.id==id).select(db.company.ALL)
>     ### create form
>     form=SQLFORM.factory(db.bedrijf,...,...)
>     ### pre-populate form
>     if company:
>         form.vars.name=company[0].name
>         form.vars.CoC_number=company[0].CoC_number
>         form.vars.subdossiernumber=company[0].subdossiernumber
>         ...
>         if form.accepts(request.vars,session):
>
> company.update_record(**db.bedrijf._filter_fields(form.vars))
>            ...
>             session.flash='Records updated'
>             redirect(URL(r=request,f='retrieve',args=id))
>         elif form.errors:
>             response.flash=response.flash_formerror
>         return dict(form=form)
>
> When I execute the function the data is retrieved, the form is created
> and pre-populated, however, when I click the submit button, the
> validator on the Coc_number and subdossiernumber field prevents the
> record from being updated and displays the error_message: 'combination
> of CoC-number and subdossiernumber already in database'
>
> I didn't expect this to happen when updating a record without changing
> the CoC-number and subdossiernumber, I'd expect this to happen when I
> change the CoC-number and subdossiernumber of one company to that of
> another company. Is there a solution to solve this problem?
>
> Kind regards,
>
> Annet.

Reply via email to