Как хранить двумерный массив в модели Django
Проблема: Мне нужно хранить двумерный массив в одном из полей таблицы.
Пример
id:1
Имя_учителя: "Амит"
время: [[9:00am, 2:00pm], [2:00pm, 6:00pm], [6:00am, 9:00pm]]. # Нужно хранить 2-D массив вида нескольких меток времени в поле,
код находится здесь:
Model.py
class ScheduleClassification(models.Model):
vendor_id = models.ForeignKey(Vendor, on_delete=models.CASCADE, default=None, null=True)
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=100)
description = models.CharField(max_length=1000)
start_date = models.DateField(auto_now_add=True)
end_date = models.DateField(auto_now_add=True)
duration = models.CharField(max_length=20, default="forever")
day_type = models.CharField(max_length=20)
time = #how do i make this field
как я могу хранить это, пожалуйста, дайте мне знать лучший способ сделать это. в django models
Во-первых, это не очень хороший способ хранения всего массива, что вы должны сделать, так это Создать новую модель, которая будет иметь время начала и окончания урока для учителя и расписание
class Lesson(models.Model):
start = models.DateTimeField()
end = models.DateTimeField()
duration = models.CharField(max_length=20, default="forever")
teacher = models.ForeignField(Teacher)
schedule = models.ForeignField(Schedule)
это лучший способ, и вы можете создать функцию, которая сделает массив, который вы хотите
# in the Schedule Class
def create_array(self):
array = []
qs = Lesson.objects.filter(schedule=self)
for lesson in qs.iterator():
lesson = [ lesson.start , lesson.end]
array.append(lesson)
return array
также вы можете сделать эту функцию property
, чтобы улучшить ее