Don't have time for a thorough review, but a few points... sum_of_sum = md5_hash('|'.join(str(i) for i in list_of_row_md5h)) >
I think you only want to hash individual records and check individual records when they are submitted (probably via an ajax submission). There's no reason to reject an update for one record just because another record has changed (which is what will happen if you create a single hash for the entire set of records). > form._formkey = sum_of_sum* # does notting here...* > Although the input field is named "_formkey", the form attribute is form.formkey, not form._formkey. Also, the _formkey isn't created until you call .accepts or .process, so you have to change the formkey after form.process. form.process(detect_record_change=True) > I do not think you will be able to use the built-in detect_record_change functionality with SQLFORM.factory. I was suggesting you manually code your own by hashing the records and comparing the hashes upon submission. Anthony