I manually did the work around instead of using SQLFORM's deletable. Thanks Massimo!
On Friday, July 4, 2014 4:51:03 PM UTC+8, Massimo Di Pierro wrote: > > I am not sure. Can you explain more of what you are doing? I can see a > problem with record versioning. It is supposed o work so that records are > disabled (is_active=False) and never deleted to that the archived records > can point to the current record even if disabled. disabled records are > filtered out from searches. Somehow you are actually deleting records and > web2py tries to archive a reference to them. You cannot have both. > > > On Friday, 4 July 2014 03:22:26 UTC-5, lyn2py wrote: >> >> I just saw this: >> >> Field(name, 'string', length=None, default=None, >> required=False, requires='<default>', >> ondelete='CASCADE', notnull=False, unique=False, >> uploadfield=True, widget=None, label=None, comment=None, >> writable=True, readable=True, update=None, authorize=None, >> autodelete=False, represent=None, compute=None, >> uploadfolder=None, >> uploadseparate=None,uploadfs=None) >> >> >> >> ondelete translates into the "ON DELETE" SQL statement. By >> default it is set to "CASCADE". This tells the database that when it >> deletes a record, it should also delete all records that refer to it. To >> disable this feature, set ondelete to "NO ACTION" or "SET NULL". >> >> >> So I guess that means it cascades by default. >> >> >> A separate question… if record versioning is turned on, and SQLFORM >> deletable=True, the following error is produced, may I know what I am doing >> incorrectly? >> >> >> >> Traceback (most recent call last): >> File "/.../web2py/source/gluon/restricted.py", line 221, in restricted >> exec ccode in environment >> File "/.../web2py/source/applications/.../controllers/default.py", line >> 247, in <module> >> File "/.../web2py/source/gluon/globals.py", line 389, in <lambda> >> self._caller = lambda f: f() >> File "/.../web2py/source/gluon/tools.py", line 3465, in f >> return action(*a, **b) >> File "/.../web2py/source/applications/.../controllers/default.py", line >> 217, in edit_this >> if >> form.process(onvalidation=sqlform_validate,onsuccess=auth.archive).accepted: >> >> File "/.../web2py/source/gluon/html.py", line 2289, in process >> self.validate(**kwargs) >> File "/.../web2py/source/gluon/html.py", line 2233, in validate >> onsuccess(self) >> File "/.../web2py/source/gluon/tools.py", line 3849, in archive >> id = archive_table.insert(**new_record) >> File "/.../web2py/source/gluon/dal.py", line 9252, in insert >> ret = self._db._adapter.insert(self, self._listify(fields)) >> File "/.../web2py/source/gluon/dal.py", line 1362, in insert >> raise e >> IntegrityError: foreign key constraint failed >> >> >> Is it trying to cascade delete but failed? >> >> >> >> On Friday, July 4, 2014 4:00:12 PM UTC+8, lyn2py wrote: >>> >>> Hi guys, >>> >>> Just a simple question, does the SQLFORM deletable=True trigger a >>> cascade delete? >>> >>> >>> -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout.

