Index: django/http/__init__.py
===================================================================
--- django/http/__init__.py	(revision 9362)
+++ django/http/__init__.py	(working copy)
@@ -360,6 +360,7 @@
 
     def _set_content(self, value):
         self._container = [value]
+        del self['ETag']
         self._is_string = True
 
     content = property(_get_content, _set_content)
Index: tests/regressiontests/httpwrappers/tests.py
===================================================================
--- tests/regressiontests/httpwrappers/tests.py	(revision 9362)
+++ tests/regressiontests/httpwrappers/tests.py	(working copy)
@@ -444,9 +444,22 @@
 >>> x.update(y)
 >>> x.getlist('a')
 [u'1', u'2', u'3', u'4']
+
+#
+# Regression test for #9163: should remove ETag if content is modified
+#
+>>> content = 'some content'
+>>> hash = md5_constructor('some content').hexdigest()
+>>> r = HttpResponse(content)
+>>> r['ETag'] = hash
+>>> r.content = 'new content'
+>>> r.has_header('ETag')
+False
+
 """
 
 from django.http import QueryDict, HttpResponse
+from django.utils.hashcompat import md5_constructor
 
 if __name__ == "__main__":
     import doctest
