diff --git a/product/ERP5Form/ProxyField.py b/product/ERP5Form/ProxyField.py
index 680fb70d057fe68caf2ca66f0b4fe405e51494bd..d137feeb3fc26888fae16710ea1aeb308ad75bb1 100644
--- a/product/ERP5Form/ProxyField.py
+++ b/product/ERP5Form/ProxyField.py
@@ -567,8 +567,9 @@ class ProxyField(ZMIField):
       field = REQUEST.get('field__proxyfield_%s_%s' % (self.id, id), self)
       REQUEST.set('field__proxyfield_%s_%s' % (proxy_field.id, id), field)
 
-    # Don't use cache if field is not stored in zodb.
-    if self._p_oid is None:
+    # Don't use cache if field is not stored in zodb, or if target field is
+    # defined by a TALES
+    if self._p_oid is None or self.tales['field_id'] or self.tales['form_id']:
       return self._get_value(id, **kw)
 
     cache_id = ('ProxyField.get_value',
diff --git a/product/ERP5Form/tests/testFields.py b/product/ERP5Form/tests/testFields.py
index 6aaf2951c6e473e56929709bbbe9ef8d9b6f2879..ea5ab1ca38055d7c8986abae3c7c0a4055a16bc9 100644
--- a/product/ERP5Form/tests/testFields.py
+++ b/product/ERP5Form/tests/testFields.py
@@ -30,6 +30,7 @@ import unittest
 
 # Make it possible to use Globals.get_request
 class DummyRequest(dict):
+  __allow_access_to_unprotected_subobjects__ = 1
   def set(self, k, v):
     self[k] = v
 
@@ -226,6 +227,26 @@ class TestProxyField(unittest.TestCase):
                                         field_id='my_title',))
     self.assertEquals('Base_view', proxy_field.get_value('title'))
 
+  def test_get_value_cache_on_TALES_target(self):
+    # If the proxy field defines its target using TALES, then no caching should
+    # happen.
+    original_field = self.addField(self.container.Base_viewProxyFieldLibrary,
+                                   'my_title', 'Title', 'StringField')
+    other_field = self.addField(self.container.Base_viewProxyFieldLibrary,
+                                   'my_other_field', 'Other', 'StringField')
+    proxy_field = self.addField(self.container.Base_view,
+                                'my_id', 'ID', 'ProxyField')
+    proxy_field.manage_edit_xmlrpc(dict(form_id='Base_viewProxyFieldLibrary'))
+    proxy_field.manage_tales_xmlrpc(dict(field_id='request/field_id'))
+
+    self.container.REQUEST.set('field_id', 'my_title')
+    self.assertEquals(original_field, proxy_field.getTemplateField())
+    self.assertEquals('Title', proxy_field.get_value('title'))
+
+    self.container.REQUEST.set('field_id', 'my_other_field')
+    self.assertEquals(other_field, proxy_field.getTemplateField())
+    self.assertEquals('Other', proxy_field.get_value('title'))
+
 
 class TestFieldValueCache(unittest.TestCase):
   """Tests field value caching system