Index: django/db/models/manipulators.py
===================================================================
--- django/db/models/manipulators.py	(revision 3463)
+++ django/db/models/manipulators.py	(working copy)
@@ -278,7 +278,7 @@
     if isinstance(field_list[0].rel, ManyToOneRel):
         kwargs = {'%s__%s__iexact' % (field_name_list[0], field_list[0].rel.field_name): field_data}
     else:
-        kwargs = {'%s__iexact' % field_name_list[0]: field_data}
+        kwargs = {'%s__exact' % field_name_list[0]: field_data}
     for f in field_list[1:]:
         # This is really not going to work for fields that have different
         # form fields, e.g. DateTime.
@@ -291,7 +291,7 @@
         if isinstance(f.rel, ManyToOneRel):
             kwargs['%s__pk' % f.name] = field_val
         else:
-            kwargs['%s__iexact' % f.name] = field_val
+            kwargs['%s__exact' % f.name] = field_val
     try:
         old_obj = self.manager.get(**kwargs)
     except ObjectDoesNotExist:
Index: django/db/models/fields/__init__.py
===================================================================
--- django/db/models/fields/__init__.py	(revision 3463)
+++ django/db/models/fields/__init__.py	(working copy)
@@ -385,6 +385,18 @@
                 raise validators.ValidationError, gettext_lazy("This field cannot be null.")
         return str(value)
 
+class BinaryField(CharField):
+    """Sometimes we have fields that need to store a small amount of binary
+    data. This is different then a varchar on postgresql at least because it
+    will not allow fields that are just nul bytes.
+    """
+    def get_manipulator_field_objs(self):
+        # XXX We should probably use a better form field for this. Like
+        # XXX something that can grok colon-separated hexlify.
+        #
+        return [django.forms.TextField]
+
+
 # TODO: Maybe move this into contrib, because it's specialized.
 class CommaSeparatedIntegerField(CharField):
     def get_manipulator_field_objs(self):
Index: django/db/backends/ado_mssql/creation.py
===================================================================
--- django/db/backends/ado_mssql/creation.py	(revision 3463)
+++ django/db/backends/ado_mssql/creation.py	(working copy)
@@ -1,5 +1,6 @@
 DATA_TYPES = {
     'AutoField':         'int IDENTITY (1, 1)',
+    'BinaryField':       'varbinary(%(maxlength)s)',
     'BooleanField':      'bit',
     'CharField':         'varchar(%(maxlength)s)',
     'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)',
Index: django/db/backends/postgresql/creation.py
===================================================================
--- django/db/backends/postgresql/creation.py	(revision 3463)
+++ django/db/backends/postgresql/creation.py	(working copy)
@@ -4,6 +4,7 @@
 # If a column type is set to None, it won't be included in the output.
 DATA_TYPES = {
     'AutoField':         'serial',
+    'BinaryField':       'bytea',
     'BooleanField':      'boolean',
     'CharField':         'varchar(%(maxlength)s)',
     'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)',
Index: django/db/backends/sqlite3/creation.py
===================================================================
--- django/db/backends/sqlite3/creation.py	(revision 3463)
+++ django/db/backends/sqlite3/creation.py	(working copy)
@@ -3,6 +3,7 @@
 # schema inspection is more useful.
 DATA_TYPES = {
     'AutoField':                    'integer',
+    'BinaryField':                  'BLOB',
     'BooleanField':                 'bool',
     'CharField':                    'varchar(%(maxlength)s)',
     'CommaSeparatedIntegerField':   'varchar(%(maxlength)s)',
Index: django/db/backends/mysql/creation.py
===================================================================
--- django/db/backends/mysql/creation.py	(revision 3463)
+++ django/db/backends/mysql/creation.py	(working copy)
@@ -4,6 +4,7 @@
 # If a column type is set to None, it won't be included in the output.
 DATA_TYPES = {
     'AutoField':         'integer AUTO_INCREMENT',
+    'BinaryField':       'varbinary(%(maxlength)s)',
     'BooleanField':      'bool',
     'CharField':         'varchar(%(maxlength)s)',
     'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)',
