Представление экспорта данных 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, то какой другой файл можно использовать для экспорта данных?

Не стесняйтесь комментировать, если вам нужна дополнительная информация/разъяснения по сценарию. Спасибо

Вернуться на верх