Используйте QuerySet.values()
для извлечения интересующих вас полей в виде диктов, затем передайте это json.dumps()
, ie:
>>> qs = User.objects.values("username", "first_name", "last_name", "email", "userprofile__nickname")
>>> print(json.dumps(list(qs), indent=2))
[
{
"username": "toto",
"first_name": "",
"last_name": "",
"email": "toto@example.com",
"userprofile__nickname": "Toto le toto"
},
{
"username": "root",
"first_name": "Root",
"last_name": "Root",
"email": "root@example.com",
"userprofile__nickname": "Root"
},
]
В зависимости от ваших моделей В полях может потребоваться предоставить пользовательский подкласс JSONDecoder для даты и времени и других типов, которые не обрабатываются напрямую по умолчанию JSONEncoder
.