是否可以向每个ManyToMany字段选项添加一个或多个字段?Django:为每个ManyToMany字段选项添加更多字段
我的模型:
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)
正如你可以在图片中看到,我在多对多字段中的选项。这些选项是:
- 大学1
- 大学2
- 大学3
我想有一个额外的文本(字符)字段旁边的每个选项(大学1 ,大学2,大学3)。
这可能吗?
EDIT 1:
当前代码:
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)
编辑2:问题固定。我得到了没有表错误,因为我删除了迁移文件并删除数据库(db.sqlite3)文件并再次应用迁移,它已修复。
这可能会帮助:https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships。这解决了这个问题的后端。我不确定在这种情况下是否有用于窗体小部件的现成解决方案。 –