最近在使用Python的Django框架开发web站点,通过models.py文件建表后,执行数据库迁移(命令行:mange.py makemigrations)时报错,
报错内容:
1 class Guest(models.Model):
2 File "C:\Users\dell\guest\sign\models.py", line 18, in Guest
3 event = models.ForeignKey(Event) # 关联发布会
4 TypeError: __init__() missing 1 required positional argument: 'on_delete'
解决方法:
将models.py文件下的event = models.ForeignKey(Event) 修改为:
event = models.ForeignKey('Event','on_delete=models.CASCADE,')
报错原因:
classForeignKey(to,on_delete,** options)
多对一的关系,需要两个位置参数:模型相关的类和on_delete选项。(on_delete实际上并不需要,但是不提供它会给出弃用警告,这在Django 2.0中将是必需的,1.8及以前的版本不需要)
要创建递归关系,即:与自身具有多对一关系的对象使用。 models.ForeignKey('self', on_delete=models.CASCADE)
PS:Django的版本更新比较频繁,每次版本迭代都有些改动,有问题直接查官方文档或者Stack Overflow,基本都可以解决。