#django #django-models
Вопрос:
У меня есть проект, в котором я должен обрабатывать вмешательства, при этом у меня есть раздел с таблицей для хранения большого количества столбцов и строк в моей базе данных, но у меня есть некоторые проблемы с поиском правильного способа сделать это.
Таблица имеет следующий формат/содержание:
Значения из 1 — го столбца фиксированы. Позвольте мне поделиться некоторыми идеями, которые у меня были:
- Сохраните каждую строку в одном поле символов и обработайте каждый столбец, проанализировав каждое значение, разделенное символом «;».
- Сохраните каждую строку, связанную с другой таблицей, с помощью внешнего ключа, содержащего информацию о столбцах, например:
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.
- Другим подходом было отношение «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.