Index: django/db/models/query.py
===================================================================
--- django/db/models/query.py	(revision 3335)
+++ django/db/models/query.py	(working copy)
@@ -902,8 +902,14 @@
             # Last query term was a normal field.
             column = field.column
 
+	## see ticket #2144
         where.append(get_where_clause(lookup_type, current_table + '.', column, value))
-        params.extend(field.get_db_prep_lookup(lookup_type, value))
+	def _hack_pvalue(value):
+            from django.db.models import Model as hack_Model
+            if isinstance(value, hack_Model):
+                return value.id
+            return value
+        params.extend([_hack_pvalue(param) for param in field.get_db_prep_lookup(lookup_type, value)])
 
     return joins, where, params
 
