diff --git a/openerp/addons/test_new_api/models.py b/openerp/addons/test_new_api/models.py index cec04aa8b20..40e55a9e7cb 100644 --- a/openerp/addons/test_new_api/models.py +++ b/openerp/addons/test_new_api/models.py @@ -31,6 +31,7 @@ class Category(models.Model): name = fields.Char(required=True) parent = fields.Many2one('test_new_api.category') display_name = fields.Char(compute='_compute_display_name', inverse='_inverse_display_name') + dummy = fields.Char(store=False) @api.one @api.depends('name', 'parent.display_name') # this definition is recursive diff --git a/openerp/addons/test_new_api/tests/test_new_fields.py b/openerp/addons/test_new_api/tests/test_new_fields.py index af42443fbc0..4eb0e06c9fb 100644 --- a/openerp/addons/test_new_api/tests/test_new_fields.py +++ b/openerp/addons/test_new_api/tests/test_new_fields.py @@ -61,6 +61,13 @@ class TestNewFields(common.TransactionCase): def test_10_non_stored(self): """ test non-stored fields """ + # a field declared with store=False should not have a column + field = self.env['test_new_api.category']._fields['dummy'] + self.assertFalse(field.store) + self.assertFalse(field.compute) + self.assertFalse(field.inverse) + self.assertFalse(field.column) + # find messages for message in self.env['test_new_api.message'].search([]): # check definition of field diff --git a/openerp/addons/test_new_api/views.xml b/openerp/addons/test_new_api/views.xml index f66f1ea57da..294f7ccd207 100644 --- a/openerp/addons/test_new_api/views.xml +++ b/openerp/addons/test_new_api/views.xml @@ -173,6 +173,7 @@ + diff --git a/openerp/fields.py b/openerp/fields.py index 32cdafb53d5..56d177d9c9e 100644 --- a/openerp/fields.py +++ b/openerp/fields.py @@ -671,7 +671,7 @@ class Field(object): def to_column(self): """ Return a column object corresponding to `self`, or ``None``. """ - if not self.store and self.compute: + if not self.store and (self.compute or not self.column): # non-stored computed fields do not have a corresponding column self.column = None return None