If possible I prefer to keep foreign_keys=True for db integrity. Thx
Ivan Il giorno domenica 8 dicembre 2013 15:41:03 UTC+1, Ivo ha scritto: > > though it may not be the preferred solution I resolved it by adding: > adapter_args=dict(foreign_keys=False) to db = > DAL('sqlite://storage.sqlite') in db.py > > > On Sunday, December 8, 2013 3:16:36 PM UTC+1, Ivan Gazzola wrote: >> >> I can't resolve this ticket in my app. I try to insert in >> Pazienti_Consulenza from appadmin but i've always this error: >> " >> <class 'sqlite3.IntegrityError'> foreign key constraint failed >> " >> >> This is my model: >> >> db.define_table('Nominativi', >> Field('nome',notnull=True, represent=lambda nome:nome.title()), >> Field('categoria',db.Categorie_Nominativi,default='1'), >> Field('sesso',requires=IS_EMPTY_OR(IS_IN_SET(['maschio','femmina']))), >> Field('mail',requires=IS_EMPTY_OR(IS_EMAIL(error_message=T('Inserire >> Una Mail Valida')))), >> Field('indirizzo'), >> Field('localita', label='Località'), >> Field('cap',requires=IS_EMPTY_OR(IS_LENGTH(5,5, >> error_message=T('Inserire Un CAP valido')))), >> Field('provincia',requires=IS_EMPTY_OR(IS_IN_SET(Elenco_Province, >> zero=T('Selezionare una Provincia')))), >> Field('codice_fiscale',length=20), >> Field('partita_iva',length=20), >> Field('data_di_nascita','date'), >> Field('professione'), >> Field('padre'), >> Field('madre'), >> Field('inviato_da'), >> Field('id_precendente','integer'), >> format=lambda >> r:r.nome.title()+'-->'+db.Categorie_Nominativi(r.categoria)['categoria']) >> >> db.Nominativi.nome.filter_in = lambda value : >> w2p_encrypt(value,key=chiave) >> db.Nominativi.nome.filter_out = lambda value : >> w2p_decrypt(value,key=chiave) >> db.Nominativi.mail.filter_in = lambda value : >> w2p_encrypt(value,key=chiave) >> db.Nominativi.mail.filter_out = lambda value : >> w2p_decrypt(value,key=chiave) >> db.Nominativi.indirizzo.filter_in = lambda value : >> w2p_encrypt(value,key=chiave) >> db.Nominativi.indirizzo.filter_out = lambda value : >> w2p_decrypt(value,key=chiave) >> db.Nominativi.localita.filter_in = lambda value : >> w2p_encrypt(value,key=chiave) >> db.Nominativi.localita.filter_out = lambda value : >> w2p_decrypt(value,key=chiave) >> db.Nominativi.cap.filter_in = lambda value : w2p_encrypt(value,key=chiave) >> db.Nominativi.cap.filter_out = lambda value : >> w2p_decrypt(value,key=chiave) >> db.Nominativi.codice_fiscale.filter_in = lambda value : >> w2p_encrypt(value,key=chiave) >> db.Nominativi.codice_fiscale.filter_out = lambda value : >> w2p_decrypt(value,key=chiave) >> db.Nominativi.padre.filter_in = lambda value : >> w2p_encrypt(value,key=chiave) >> db.Nominativi.padre.filter_out = lambda value : >> w2p_decrypt(value,key=chiave) >> db.Nominativi.madre.filter_in = lambda value : >> w2p_encrypt(value,key=chiave) >> db.Nominativi.madre.filter_out = lambda value : >> w2p_decrypt(value,key=chiave) >> >> db.Nominativi.categoria.requires=IS_IN_DB(db,'Categorie_Nominativi.id','%(categoria)s',zero=None) >> db.Nominativi.categoria.represent = lambda id,row: row.categoria >> db.Nominativi.nome.represent = lambda nome,row: nome.title() >> >> db.Nominativi.inviato_da.widget=SQLFORM.widgets.autocomplete(request,db.Nominativi.nome) >> >> db.define_table('Relazioni', >> Field('nominativo',db.Nominativi,required=True,requires=[IS_IN_DB(db, >> 'Nominativi.id')]), >> Field('referente',db.Nominativi,required=True,requires=[IS_IN_DB(db, >> 'Nominativi.id')]), >> Field('tipo_relazione',label='Tipo di relazione')) >> >> db.Relazioni.tipo_relazione.widget = lambda field,value: \ >> SQLFORM.widgets.string.widget(field,value,_placeholder="Inserire il >> tipo di relazione") >> >> db.Relazioni.referente.widget=SQLFORM.widgets.autocomplete(request,db.Nominativi.nome,id_field= >> db.Nominativi.id,limitby=(0,10), min_length=3) >> >> >> db.define_table("Consulenze", >> Field('dentista',db.Nominativi,required=True), >> Field('data_inizio_collaborazione','date'), >> Field('data_fine_collaborazione','date'), >> Field('id_precedente','integer'), >> format=lambda r:db.Nominativi(r.dentista)['nome']) >> odontoiatri=db(db.Nominativi.categoria==2) >> >> db.Consulenze.dentista.requires=IS_IN_DB(odontoiatri,'Nominativi.id','%(nome)s') >> >> db.define_table("Pazienti_Consulenza", >> Field('dentista',db.Consulenze, required=True), >> Field('paziente',db.Nominativi,required=True, unique=True)) >> >> everything worked fine when I've added the table. >> I can't see what is wrong in the last table ... >> >> Thx >> > -- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.