【问题标题】:Trying to save objects in a many-to-many relationship (multiple inheritance)尝试以多对多关系(多重继承)保存对象
【发布时间】:2025-11-30 23:40:01
【问题描述】:

我正在为一所教育学校做一个 django 应用程序,我有两个类(RegularSchoolClass 和 AdhocSchoolClass)继承自一个 SchoolClass(不是抽象的)。我有另一个课程(LessonSchedule),它记录每周或每天的课程安排,并且与 SchoolClass 有多对多的关系。

保存常规学校课程后,我正在尝试更新相关的课程表 (https://docs.djangoproject.com/en/1.11/topics/db/examples/many_to_many/)。

我收到以下错误 - 我认为这是因为 LessonSchedule 是与 SchoolClass 而不是 RegularSchoolClass 的多对多关系?有没有办法让它工作(我真的不想为 RegularSchoolClass 和 AdhocSchoolClass 复制相同的代码)?

ValueError: Cannot add "<RegularSchoolClass: Kindergarten One, Dan, Saturday, 9:00AM - 10:45AM>": the value for field "schoolclass" is None

models.py

class SchoolClass(TimeStampedModel):
    pass

class RegularSchoolClass(SchoolClass):
    def save(self, *args, **kwargs):
        for l in LessonSchedule.objects.filter(lesson_frequency=self.lesson_frequency, start_date=self.start_date):
            l.schoolclass.add(self)

class AdhocSchoolClass(SchoolClass):
    pass

class LessonSchedule(models.Model):
    school_class = models.ManyToManyField(SchoolClass)

【问题讨论】:

    标签: django


    【解决方案1】:

    你必须在你的班级 SchoolClass 中添加一个野外学校班级

    school_class=models.CharField(max_length=some length)
    

    【讨论】: