Skip to content

Commit

Permalink
Ensure we don't try to create duplicate columns in dataset insert.
Browse files Browse the repository at this point in the history
This may occur when the col name differs from the field name.
  • Loading branch information
coleifer committed Oct 13, 2023
1 parent e04d237 commit 605f97e
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
1 change: 1 addition & 0 deletions playhouse/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ def columns(self):

def _migrate_new_columns(self, data):
new_keys = set(data) - set(self.model_class._meta.fields)
new_keys -= set(self.model_class._meta.columns)
if new_keys:
operations = []
for key in new_keys:
Expand Down
12 changes: 12 additions & 0 deletions tests/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,18 @@ def test_table_column_creation(self):
self.assertEqual(table.columns, ['id', 'name'])
self.assertEqual(list(table.all()), [{'id': 1, 'name': 'charlie'}])

def test_table_column_creation_field_col(self):
table = self.dataset['people']
table.insert(**{'First Name': 'charlie'})
self.assertEqual(table.columns, ['id', 'First_Name'])
self.assertEqual(list(table.all()), [{'id': 1, 'First_Name': 'charlie'}])

table.insert(**{'First Name': 'huey'})
self.assertEqual(table.columns, ['id', 'First_Name'])
self.assertEqual(list(table.all().order_by(table.model_class.id)), [
{'id': 1, 'First_Name': 'charlie'},
{'id': 2, 'First_Name': 'huey'}])

def test_import_json(self):
table = self.dataset['people']
table.insert(name='charlie')
Expand Down

0 comments on commit 605f97e

Please sign in to comment.