diff --git a/datasette/views/table.py b/datasette/views/table.py index af5358dd..04100dc6 100644 --- a/datasette/views/table.py +++ b/datasette/views/table.py @@ -629,6 +629,8 @@ class TableView(RowTableShared): # If there's a sort or sort_desc, add that value as a prefix if (sort or sort_desc) and not is_view: prefix = rows[-2][sort or sort_desc] + if isinstance(prefix, dict) and "value" in prefix: + prefix = prefix["value"] if prefix is None: prefix = "$null" else: diff --git a/tests/test_api.py b/tests/test_api.py index c46b9977..c97eced9 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -753,6 +753,8 @@ def test_table_with_reserved_word_name(app_client): ("/fixtures/123_starts_with_digits.json", 0, 1), # Ensure faceting doesn't break pagination: ("/fixtures/compound_three_primary_keys.json?_facet=pk1", 1001, 21), + # Paginating while sorted by an expanded foreign key should work + ("/fixtures/roadside_attraction_characteristics.json?_size=2&_sort=attraction_id&_labels=on", 5, 3), ], ) def test_paginate_tables_and_views(app_client, path, expected_rows, expected_pages):