Django - Обработка нескольких текстовых полей в одном CharField или хранение полной таблицы как она есть

У меня есть проект, где я должен обрабатывать интервенции, для этого у меня есть раздел с таблицей для хранения большого количества столбцов и строк в моей базе данных, но у меня есть некоторые проблемы с поиском правильного способа сделать это.

Таблица имеет следующий формат/содержание: Table format

Значения из 1-го столбца фиксированы. Позвольте мне поделиться некоторыми идеями, которые у меня были:

  1. Save each row in a single CharField and handling each column parsing each value separated by a character like ";".
  2. Save each row associated to another table by a ForeignKey containing the columns info like:

class MastCompnentsInfo(models.Model):
    column_1 = models.CharField(max_length=20, null=True, blank=True)
    column_2 = models.CharField(max_length=20, null=True, blank=True)
    ....

class Intervention(models.Model):
    ....
    t_dat_log = models.ForeignKey('MastCompnentsInfo', related_name='t_dat_log', on_delete=models.DO_NOTHING, null=True, blank=True)
    t_s_speed_1 = models.ForeignKey('MastCompnentsInfo', related_name='t_s_speed_1', on_delete=models.DO_NOTHING, null=True, blank=True)

Но мне не очень нравится эта идея, так как обновление информации требует много работы, моя модель MastCompnentsInfo будет беспорядочной с большим количеством информации, и я не представляю, как получить доступ к каждому полю по отдельности из MastCompnentsInfo в HTML.


  1. Another approach was an "OneToMany" relation and put all fixed values from the 1st column in MultiSelectField choices. But like idea 2. I'm with some problems accessing and update the information in the HTML. My models would be like this:

mast_components = ((1, 'Data Logger'),
                  (2, 'Sensor Velocidade 1'),...)

class MastCompnentsInfo(models.Model):
    c_mast_components = MultiSelectField(null=True, blank=True, choices=mast_components)
    intervention = models.ForeignKey('Intervention', on_delete=models.DO_NOTHING)
    column_1 = models.CharField(max_length=20, null=True, blank=True)
    column_2 = models.CharField(max_length=20, null=True, blank=True)
    ....

class Intervention(models.Model):
    ....

Надеюсь, кто-нибудь сможет помочь мне с лучшим и более чистым способом хранения, доступа и обновления этой информации.

Заранее спасибо.

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