Adhishwar
Adhishwar

Reputation: 41

Storing arrays in Django Models (not PostGreSQL)

I want a field in my Django model to store array data.

For instance consider a model that stores Student data. I want an array field that stores the marks of that student as an integer array. What can I do?

I am not using PostGreSQL so I cannot use ArrayField.

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

Upvotes: 1

Views: 286

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 477684

Typically you don't. Even for PostgreSQL not advisable. Relational databases are usually better to work with scalar values in columns.

You can make a model Mark, with a ForeignKey [Django-doc] to Student, for example:

class Student(models.Model):
    # …

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

You can then create for example marks for a student:

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

Then you access the Mark objects of the student with:

student.marks.all()

Upvotes: 2

Related Questions