classBaseDatabaseValidation:"""Encapsulate backend-specific validation."""def__init__(self,connection):self.connection=connectiondefcheck(self,**kwargs):return[]defcheck_field(self,field,**kwargs):errors=[]# Backends may implement a check_field_type() method.if(hasattr(self,"check_field_type")and# Ignore any related fields.notgetattr(field,"remote_field",None)):# Ignore fields with unsupported features.db_supports_all_required_features=all(getattr(self.connection.features,feature,False)forfeatureinfield.model._meta.required_db_features)ifdb_supports_all_required_features:field_type=field.db_type(self.connection)# Ignore non-concrete fields.iffield_typeisnotNone:errors.extend(self.check_field_type(field,field_type))returnerrors