'Generates a full SQL statement to add a foreign key constraint'

def foreign_key_sql(self, from_table_name, from_column_name, to_table_name, to_column_name):

    constraint_name = ('%s_refs_%s_%s' % (from_column_name, to_column_name, self._digest(from_table_name, to_table_name)))
    return ('ALTER    TABLE    %s    ADD    CONSTRAINT    %s    FOREIGN    KEY    (%s)    REFERENCES    %s    (%s)%s;' % (self.quote_name(from_table_name), self.quote_name(self.shorten_name(constraint_name)), self.quote_name(from_column_name), self.quote_name(to_table_name), self.quote_name(to_column_name), self._get_connection().ops.deferrable_sql()))
