ModelSQL.__raise_integrity_error raises confusing errors when using Many2One
When ModelSQL is created, written or deleted checks integrity with the method __raise_integrity_error.
This method checks the fields of the model, and assert that required fields are filled and many2one relations are correct.
The issue is that if one many2one field is checked before all the required fields are checked, it will raise an error:
"The value \"%(value)s\" of field \"%(field)s\" on \"%(model)s\" doesn't exist.",
instead of the real error, that is:
"The field \"%(field)s\" on \"%(model)s\" is required.".
It can be improved by checking first all the required field and after all the relations.