Ist es möglich, jeder ManyToMany-Feldoption ein oder mehrere Zeichenfelder hinzuzufügen?Django: Hinzufügen weiterer Felder zu jeder ManyToMany-Feldoption
Meine Models:
class engineeringUni(models.Model):
field2 = models.CharField(max_length=200)
des_eng = models.CharField(max_length=1000, default='Add description')
def __str__(self):
return self.field2
def description_eng_universities(self):
return self.des_eng
class engineering_courses(models.Model):
course_name = models.CharField(max_length=400)
course_description = models.CharField(max_length=1000, default='This is a description')
course_offered_by = models.ManyToManyField(engineeringUni, related_name='course_offered_by')
course_duration = models.IntegerField(blank=False, default='2')
def __str__(self):
return self.course_name
def description_course(self):
return self.course_description
def offered_by_courses(self):
return self.course_offered_by
def duration_courses(self):
return str(self.course_duration)
Wie Sie im Bild sehen können, habe ich die Optionen im ManyToMany Feld. Diese Optionen sind:
- University 1
- Universität 2
- Universität 3
Was ich haben will, ist ein zusätzlicher Text (Char) Feld neben jeder dieser Optionen (University 1 , Universität 2, Universität 3).
Ist das möglich?
EDIT 1:
Aktuelle Code:
class engineering_courses(models.Model):
course_name = models.CharField(max_length=400)
course_description = models.CharField(max_length=1000, default='This is a description')
course_offered_by = models.ManyToManyField(
engineeringUni,
through='ThroughModel',
through_fields=('course', 'university'),
)
course_duration = models.IntegerField(blank=False, default='2')
def __str__(self):
return self.course_name
def description_course(self):
return self.course_description
def offered_by_courses(self):
return self.course_offered_by
def duration_courses(self):
return str(self.course_duration)
class ThroughModel(models.Model):
course = models.ForeignKey(engineering_courses, on_delete=models.CASCADE)
university = models.ForeignKey(engineeringUni, on_delete=models.CASCADE)
additional_text = models.CharField(max_length=200)
EDIT 2: Problem behoben. Ich bekam keinen Tabellenfehler, weil ich die Migrationsdateien gelöscht und die Datenbank (db.sqlite3) -Datei gelöscht und die Migration erneut durchgeführt hatte.
, die helfen könnten: https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships. Das löst die Backend-Seite dieses Problems. Ich bin nicht sicher, ob es eine fertige Lösung in Form eines Formular-Widgets für diese Art von Situation gibt. –