Как получить вложенный экспорт json с помощью django-import-export?
Я использую django-import-export и хочу делать экспорт в json, в котором отношения являются вложенными. Допустим, я использую пример из документации (Book/Author/Category) и хочу сделать экспорт всех книг, включая их авторов и категории. Я бы ожидал, что экспорт будет включать авторов и категории как объекты, чтобы это выглядело примерно так:
[
{
"name": "Hitchhikers guide to the galaxy",
"Author": {"name": "Douglas Adams"}
"categories": [{"name": "Science fiction"}, {"name": "classics"}]
"imported": true
},
{
"name": "Don Quixote",
"Author": {"name": "Miguel de Cervantes"},
"categories": [{"name": "Idiots"}]
"imported": true
}
]
Я просматриваю документацию, но не могу найти, как этого добиться. Может ли кто-нибудь подсказать мне, как этого добиться?
[EDIT]
Причина, по которой я пытаюсь это сделать, заключается в том, что у нас есть некоторые модели, содержащие определенные настройки, которые мы тестируем в Acceptance. Когда они готовы, я хочу иметь возможность экспортировать их из приемки, а затем импортировать в производство. Аналогично, я также хочу иметь возможность экспортировать из производства и импортировать в приемку.
В django-import-export нет простого способа сделать это, но можно генерировать вложенные структуры данных, используя методы dehydrate()
.
Например, в примере приложения можно создать вложенное поле Author следующим образом:
class BookResource(ModelResource):
class Meta:
model = Book
def dehydrate_author(self, book):
author = getattr(book, "author", None)
if author:
return {"name": author.name}
return dict()
В результате получится структура данных следующего вида:
[{"id": 101, "name": "Fly Fishing", "author": {"name": "J. R. Hartley"}}]