在《Python编程:从入门到实践》中,定义模型Entry,遇到TypeError: __init__() missing 1 required positional argument: 'on_delete'错误。
CODE: models.py
from django.db import models # Create your models here. class Topic(models.Model): """用户学习的主题""" text = models.CharField(max_length=200) date_added = models.DateTimeField(auto_now_add=True) def __str__(self): """返回模型的字符串表示""" return self.text class Entry(models.Model): """学到的有关某个主题的具体知识""" topic = models.ForeignKey(Topic) text = models.TextField() date_added = models.DateTimeField(auto_now_add=True) class Meta: verbose_name_plural = 'entries' def __str__(self): return self.text[:50] + "..."
执行:执行 python manage.py makemigrations 【app_name】时报错。

错误提示,缺少on_delete,查询资料后发现,之前是有默认on_delete。目前的Django版本需要自己手动添加。
topic = models.ForeignKey(Topic,on_delete=models.CASCADE)
在Django中的一对多关系,采用Foreign创建多对一关系,Foreign(外键所在类对象的名字)创建外键。而多的这个on_delete参数,在主外关系键中,是一种级联。当产生级联操作时,比如级联删除,删除主表的数据时候从表中的数据也随着一起删除,保证数据的完整性、一致性。
浙公网安备 33010602011771号