Django中关联Course的Lesson与Question模型外键配置问题
首先给出正确的Question模型定义:
class Question(models.Model): # 外键关联Lesson模型 lesson = models.ForeignKey(Lesson, on_delete=models.CASCADE) # 其余你的自定义字段...
相关说明:
- 你原来的写法有两个错误:一是外键指向的对象错设为了Course,改为Lesson即可满足你关联Lesson的需求;二是
on_delete参数的写法错误,正确写法是models.CASCADE。 - Django的ForeignKey字段会自动在数据库表中生成带
_id后缀的存储字段,你定义字段名为lesson,数据库实际存储的字段名就是lesson_id,不需要手动在字段名中加_id后缀,遵循这个默认约定可以避免后续开发出现不必要的问题。 - 不需要额外在Question中新增关联Course的外键,后续你可以通过链式调用直接获取到对应课程:
question实例.lesson.course即可拿到该问题所属课时对应的课程对象,也能避免数据冗余。 - 修改完模型代码后,依次执行
python manage.py makemigrations、python manage.py migrate即可将字段变更同步到数据库。
内容的提问来源于stack exchange,提问作者Trader Man
相关产品推荐
相关产品推荐

