是否可以为每个ManyToMany字段选项添加一个或多个字符字段?
我的模特:
avconv version 9.20-6:9.20-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers built on Dec 7 2016 21:22:31 with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
/tmp/tmpGhtAOn: Operation not permitted
正如您在图像中看到的,我在ManyToMany字段中有选项。这些选项是:
我想要的是每个选项(大学1,大学2,大学3)旁边的附加文本(字符)字段。
这可能吗?
编辑1:
当前代码:
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)
编辑2:问题已解决。我没有表错误,因为我删除了迁移文件和删除数据库(db.sqlite3)文件并再次应用迁移,它已修复。
答案 0 :(得分:2)
再看一下arjun27答案中引用的django文档。你的ThroughModel中有多个外键,所以django很困惑。尝试在engineering_course模型中指定贯穿字段,迁移更改,看看是否有效。
标记
答案 1 :(得分:1)
您可以在ManyToManyField(docs)中使用through
模型。此模型可用于存储任何其他字段。
class engineering_courses(models.Model):
# ...
course_offered_by = models.ManyToManyField(engineeringUni, related_name='course_offered_by', through='ThroughModel')
class ThroughModel(models.Model):
course = models.ForeignKey(engineering_courses)
university = models.ForeignKey(engineeringUni)
additional_text = models.CharField()