Index: django/db/models/fields/__init__.py
===================================================================
--- django/db/models/fields/__init__.py	(revision 5140)
+++ django/db/models/fields/__init__.py	(revision 5141)
@@ -160,9 +160,9 @@
         "Returns field's value prepared for saving into a database."
         return value
 
-    def get_db_prep_lookup(self, lookup_type, value):
+    def get_db_prep_lookup(self, lookup_type, value, skip_prep=False):
         "Returns field's value prepared for database lookup."
-        if lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte', 'year', 'month', 'day', 'search'):
+        if lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte', 'year', 'month', 'day', 'search') or skip_prep:
             return [value]
         elif lookup_type in ('range', 'in'):
             return value
Index: django/db/models/query.py
===================================================================
--- django/db/models/query.py	(revision 5140)
+++ django/db/models/query.py	(revision 5141)
@@ -907,7 +907,11 @@
             column = field.column
 
         where.append(get_where_clause(lookup_type, current_table + '.', column, value))
-        params.extend(field.get_db_prep_lookup(lookup_type, value))
+        if hasattr(backend, 'COLUMN_MAPPING') and backend.COLUMN_MAPPING.has_key(lookup_type):
+            skip_prep = True
+        else:
+            skip_prep = False
+        params.extend(field.get_db_prep_lookup(lookup_type, value, skip_prep))
 
     return joins, where, params
 
