Представление экспорта данных Django M2M в CSV
Проблема, которую я пытаюсь решить, заключается в экспорте всех записей модели Django в CSV. Предполагается, что имена полей должны быть заголовками, а каждая строка должна иметь соответствующее значение в каждом столбце. Проблема заключается в том, что модель имеет несколько M2M отношений. Каждая связанная модель M2M имеет несколько полей. Я добавил подмножество основной модели и некоторые связанные модели ниже:
class Semester(TimeStampedModel):
title = models.TextField()
uuid = models.UUIDField(blank=False, null=False, default=uuid4, editable=False, verbose_name=_('UUID'))
class CreditClass(TimeStampedModel):
title = models.TextField()
category = models.CharField(max_length=32)
is_active = models.BooleanField(default=False)
credits = models.IntegerField()
class Student(TimeStampedModel):
name = models.TextField()
age = models.IntegerField()
active_semesters = models.ManyToManyField(Semester)
enrolled_classes = models.ManyToManyField(CreditClass)
У каждого студента будет разное количество ассоциированных записей модели. Например, студент A в 3-м семестре будет иметь ассоциацию с 3 объектами Semester, в то время как студент B в 5-м семестре будет иметь 5. Аналогичный случай и с подсчетом кредитных классов. Поэтому определение статических заголовков в CSV затруднительно, учитывая, что данные в каждой строке будут разными.
Поэтому единственное правдоподобное решение на мой взгляд: Экспортировать данные каждой модели M2M в виде списка JSON, выгрузить список через Python json.dumps и добавить выгруженный CSV в соответствующую колонку для каждой строки.
Теперь вопросы:
- Имеет ли смысл вышеупомянутое решение? Как его можно улучшить?
- Какими еще способами можно экспортировать динамические данные M2M в CSV?
- Если не CSV, то какой другой файл можно использовать для экспорта данных?
Не стесняйтесь комментировать, если вам нужна дополнительная информация/разъяснения по сценарию. Спасибо