Django import-export: Экспорт отношений "многие-ко-многим", как если бы это была базовая модель
Что у меня есть
Две модели, User
s и Magazine
s, находятся в отношениях "многие-ко-многим" через таблицу Subscription
s. Примерная структура модели такова:
class User(models.Model):
# ...
class Magazine(models.Model):
subscriptions = models.ManyToManyField(User, through="Subscription")
# ...
class Subscription(models.Model):
user = models.ForeignKey(User, ...
magazine = models.ForeignKey(Magazine, ...
signed_up_on = models.DateField()
active = models.BooleanField()
Что я хочу
У журналов есть своя админка, а у подписок - нет. Они отображаются в виде строки в детальном представлении каждого журнала. Мне нужно экспортировать подписки, но не журналы, через кнопку (или действие администратора) на странице администратора журнала.
В возвращаемых данных мне нужны только идентификаторы пользователя и журнала, а также другие столбцы таблицы подписки.
Я пытался сделать это с помощью опций, которые я нашел в документации django import-export, но не смог найти способ сделать это. Переопределение метода подписки ресурса get_queryset()
ничего не дало, потому что этот метод вызывается только когда кверисет None
, а библиотека помогает заполнить кверисет заранее.
ManyToManyWidget
также выглядел многообещающим, но он конкатенирует каждое связанное значение в одну ячейку. Мне не нужна одна строка на журнал со всеми подписками, сгруппированными вместе, мне нужна одна строка на подписку.
Есть ли способ сделать это без реализации моих собственных действий администратора?