diff --git a/beets/dbcore/db.py b/beets/dbcore/db.py index 050ddbd81..7a912c3a7 100644 --- a/beets/dbcore/db.py +++ b/beets/dbcore/db.py @@ -382,6 +382,8 @@ class Model(object): self._check_db() stored_obj = self._db._get(type(self), self.id) assert stored_obj is not None, "object {0} not in DB".format(self.id) + self._values_fixed = {} + self._values_flex = {} self.update(dict(stored_obj)) self.clear_dirty() diff --git a/test/test_dbcore.py b/test/test_dbcore.py index bca88cbda..9d0dd1d3b 100644 --- a/test/test_dbcore.py +++ b/test/test_dbcore.py @@ -249,6 +249,20 @@ class ModelTest(unittest.TestCase): model.some_float_field = None self.assertEqual(model.some_float_field, 0.0) + def test_load_deleted_flex_field(self): + model1 = TestModel1() + model1['flex_field'] = True + model1.add(self.db) + + model2 = self.db._get(TestModel1, model1.id) + self.assertIn('flex_field', model2) + + del model1['flex_field'] + model1.store() + + model2.load() + self.assertNotIn('flex_field', model2) + class FormatTest(unittest.TestCase): def test_format_fixed_field(self):