diff --git a/pyairtable/api/table.py b/pyairtable/api/table.py index d8f73a79..eff8534b 100644 --- a/pyairtable/api/table.py +++ b/pyairtable/api/table.py @@ -369,6 +369,7 @@ def update( fields: WritableFields, replace: bool = False, typecast: bool = False, + return_fields_by_field_id: bool = False, ) -> RecordDict: """ Update a particular record ID with the given fields. @@ -383,12 +384,17 @@ def update( fields: Fields to update. Must be a dict with column names or IDs as keys. replace: |kwarg_replace| typecast: |kwarg_typecast| + return_fields_by_field_id: |kwarg_return_fields_by_field_id| """ method = "put" if replace else "patch" updated = self.api.request( method=method, url=self.record_url(record_id), - json={"fields": fields, "typecast": typecast}, + json={ + "fields": fields, + "typecast": typecast, + "returnFieldsByFieldId": return_fields_by_field_id, + }, ) return assert_typed_dict(RecordDict, updated) diff --git a/tests/integration/test_integration_api.py b/tests/integration/test_integration_api.py index b8b994fe..120bb840 100644 --- a/tests/integration/test_integration_api.py +++ b/tests/integration/test_integration_api.py @@ -60,18 +60,13 @@ def test_return_fields_by_field_id(table: Table, cols): record = table.create({cols.TEXT_ID: "Hello"}, return_fields_by_field_id=True) assert record["fields"][cols.TEXT_ID] == "Hello" - # Updating a record by field ID does not require any special parameters, - # but the return value will have field names (not IDs). - updated = table.update(record["id"], {cols.TEXT_ID: "Goodbye"}) - assert updated["fields"][cols.TEXT] == "Goodbye" - - # This is not supported (422 Client Error: Unprocessable Entity for url) - # updated = table.update( - # record["id"], - # {cols.TEXT_ID: "Goodbye"}, - # return_fields_by_field_id=True, - # ) - # assert updated["fields"][cols.TEXT_ID] == "Goodbye" + # Update one record with return_fields_by_field_id=True + updated = table.update( + record["id"], + {cols.TEXT_ID: "Goodbye"}, + return_fields_by_field_id=True, + ) + assert updated["fields"][cols.TEXT_ID] == "Goodbye" # Create multiple records with return_fields_by_field_id=True records = table.batch_create( diff --git a/tests/test_orm.py b/tests/test_orm.py index b0128596..16387e7c 100644 --- a/tests/test_orm.py +++ b/tests/test_orm.py @@ -208,6 +208,7 @@ def test_linked_record_can_be_saved(requests_mock, access_linked_records): "Link": [address_id], }, "typecast": True, + "returnFieldsByFieldId": False, }