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

#django #django-models

Вопрос:

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

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

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

  1. Сохраните каждую строку в одном поле символов и обработайте каждый столбец, проанализировав каждое значение, разделенное символом «;».
  2. Сохраните каждую строку, связанную с другой таблицей, с помощью внешнего ключа, содержащего информацию о столбцах, например:

 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. Другим подходом было отношение «OneToMany», в котором все фиксированные значения из 1-го столбца помещались в поле выбора с несколькими выборками. Но как идея 2. У меня возникли некоторые проблемы с доступом и обновлением информации в HTML. Мои модели были бы такими:

 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):
    ....
 

Hope someone can help me with a better and cleaner way to store, access, and update this information.

Thanks in advance.