Хранение массивов в Django моделях (не PostGreSQL) - PullRequest
1 голос
/ 05 августа 2020

Я хочу, чтобы поле в моей модели Django сохраняло данные массива.

Например, рассмотрим модель, которая хранит данные Student. Мне нужно поле массива, в котором будут храниться оценки этого студента в виде целочисленного массива. Что я могу сделать?

Я не использую PostGreSQL, поэтому я не могу использовать ArrayField.

class Student(models.Model):
    ...
    ...
    marks = models.?

1 Ответ

2 голосов
/ 05 августа 2020

Обычно нет. Даже для PostgreSQL не рекомендуется. Реляционные базы данных обычно лучше работают со значениями скаляр в столбцах.

Вы можете создать модель Mark с ForeignKey [Django -doc] до Student, например:

class Student(models.Model):
    # …

class Mark(models.Model):
    mark = models.IntegerField()
    student = models.ForeignKey(
        Student,
        related_name='marks'
        on_delete=models.CASCADE
    )

Затем вы можете создать, например, оценки для учащегося:

student = Student.objects.create()
Mark.objects.create(student=stud, mark=7)
Mark.objects.create(student=stud, mark=8)

Затем вы получите доступ к Mark объектов из student с:

student.marks.all()
...