Skip to content

Commit e5e366b

Browse files
authored
Fix export json related model (#837)
1 parent 278ab5a commit e5e366b

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

sqladmin/models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1198,7 +1198,7 @@ async def generate() -> AsyncGenerator[str, None]:
11981198

11991199
for row in data:
12001200
row_dict = {
1201-
name: await self.get_prop_value(row, name)
1201+
name: str(await self.get_prop_value(row, name))
12021202
for name in self._export_prop_names
12031203
}
12041204
yield json.dumps(row_dict) + separator

tests/test_views/test_view_sync.py

+16
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import enum
2+
import json
23
from typing import Any, Generator
34

45
import pytest
@@ -741,6 +742,21 @@ def test_export_json(client: TestClient) -> None:
741742
assert response.text == '[{"name": "Daniel", "status": "ACTIVE"}]'
742743

743744

745+
def test_export_json_complex_model(client: TestClient) -> None:
746+
with session_maker() as session:
747+
user = User(name="Daniel", status="ACTIVE")
748+
session.add(user)
749+
session.commit()
750+
address = Address(user_id=user.id)
751+
session.add(address)
752+
session.commit()
753+
754+
response = client.get("/admin/address/export/json")
755+
assert response.text == json.dumps(
756+
[{"id": "1", "user_id": "1", "user": "User 1", "user.profile.id": "None"}]
757+
)
758+
759+
744760
def test_export_csv_row_count(client: TestClient) -> None:
745761
def row_count(resp) -> int:
746762
return resp.text.count("\r\n") - 1

0 commit comments

Comments
 (0)