diff --git a/datasette/app.py b/datasette/app.py index 88090ef1..9fd5aa4a 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -393,7 +393,7 @@ class DatabaseDownload(BaseView): class RowTableShared(BaseView): - async def make_display_rows(self, database, database_hash, table, rows, display_columns, pks, is_view, use_rowid): + async def make_display_rows(self, database, database_hash, table, rows, display_columns, pks, is_view, use_rowid, is_row_display): # Get fancy with foreign keys expanded = {} tables = self.ds.inspect()[database]['tables'] @@ -427,18 +427,22 @@ class RowTableShared(BaseView): # Unless we are a view, the first column is a link - either to the rowid # or to the simple or compound primary key if not is_view: - display_value = jinja2.Markup( - '{flat_pks}'.format( - database=database, - database_hash=database_hash, - table=urllib.parse.quote_plus(table), - flat_pks=path_from_row_pks(row, pks, use_rowid), - ) - ) - cells.append({ - 'column': 'rowid' if use_rowid else 'Link', - 'value': display_value, - }) + # On row display, only show the extra first column for use_rowid + if not is_row_display or (is_row_display and use_rowid): + display_value = path_from_row_pks(row, pks, use_rowid) + if not is_row_display: + display_value = jinja2.Markup( + '{flat_pks}'.format( + database=database, + database_hash=database_hash, + table=urllib.parse.quote_plus(table), + flat_pks=path_from_row_pks(row, pks, use_rowid), + ) + ) + cells.append({ + 'column': 'rowid' if use_rowid else 'Link', + 'value': display_value, + }) for value, column in zip(row, display_columns): if use_rowid and column == 'rowid': @@ -675,7 +679,7 @@ class TableView(RowTableShared): 'filters': filters, 'display_columns': display_columns, 'filter_columns': filter_columns, - 'display_rows': await self.make_display_rows(name, hash, table, rows, display_columns, pks, is_view, use_rowid), + 'display_rows': await self.make_display_rows(name, hash, table, rows, display_columns, pks, is_view, use_rowid, is_row_display=False), } return { @@ -734,7 +738,7 @@ class RowView(RowTableShared): 'database_hash': hash, 'foreign_key_tables': await self.foreign_key_tables(name, table, pk_values), 'display_columns': columns, - 'display_rows': await self.make_display_rows(name, hash, table, rows, columns, pks, False, use_rowid), + 'display_rows': await self.make_display_rows(name, hash, table, rows, columns, pks, is_view=False, use_rowid=use_rowid, is_row_display=True), } data = {