Skip to content
Advertisement

Add multiple values to a django model’s attribute

I want to add an attribute to a django model as much as the user wants to.
For example I want to add a few academic degrees

class Employer(models.Model):
    academic_degree = models.CharField(max_length=100, null=True, blank=True)

with this code We can just add one degree and if a person has more, he or she can’t add them.
I need a way to add as much degrees as i want in django forms. Is that possible?

Advertisement

Answer

Two ways to do this:

  1. Use a ManyToManyField and store the academic degrees in another table. E.g:
class AcademicDegree(models.Model):
    name = models.CharField(...)

class Employer(models.Model):
    academic_degree = models.ManyToManyField(AcademicDegree)
  1. Use a json or array field (ArrayField only works if you are using Postgres database). This is an example for JSONField():
academic_degree = models.JSONField()

You would need to manage this field to treat it as a list.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement