解决TypeError: __init__() missing 1 required positional argument: 'on_delete'
试用Djiango的时候发现执行mange.py makemigrations 和 migrate是会报错,少位置参数on_delete,查了一下是因为指定外键的方式不对,改一下就OK了。
代码如下:
from django.db import models
# Create your models here.
class BookInfo(models.Model):
"""model of book infomation"""
# 书的标题 字符串类型 最大长度20
btitle = models.CharField(max_length=20)
# 出版日期 日期类型
bpub_date = models.DateTimeField()
class HeroInfo(models.Model):
"""model of hero information"""
# 英雄的名字 字符串类型 最大长度30
hname = models.CharField(max_length=30)
# 性别 布尔类型
hgender = models.BooleanField()
# 内容 字符串类型 最大长度1000
hcontent = models.CharField(max_length=1000)
# 英雄出现的书 一对多设计 多方持有一方的外键
hbook = models.ForeignKey(BookInfo)
解决方法:
# 英雄出现的书 一对多设计 多方持有一方的外键
# hbook = models.ForeignKey(BookInfo)
hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)