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:
- 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)
- 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.