django 在生成数据库表时报错: TypeError: __init__() missing 1 required positional argument: ‘on_delete’ 解决办法

版本:python: 3.6.4、django: 2.0

 

models.py 代码如下:

# coding: utf-8
from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class Category(models.Model):
    name = models.CharField(max_length=100)
class Tag(models.Model):
    name = models.CharField(max_length=100)
class Post(models.Model):
    title = models.CharField(max_length=70)
    body = models.TextField()
    created_time = models.DateTimeField()
    modified_time = models.DateTimeField()
    excerpt = models.CharField(max_length=200, blank=True)
    category = models.ForeignKey(Category,on_delete=models.CASCADE)
    tags = models.ManyToManyField(Tag, blank=True)
    author = models.ForeignKey(User,on_delete=models.CASCADE)

 

报错误信息如下图:

TypeError: __init__() missing 1 required positional argument: 'on_delete'

TypeError: __init__() missing 1 required positional argument: 'on_delete'

中文翻译

TypeError:__init __()缺少1个必需的位置参数:'on_delete'

 

解决办法:

 

外键值的后面加上 on_delete=models.CASCADE

category = models.ForeignKey(Category)
author = models.ForeignKey(User)

改为

category = models.ForeignKey(Category,on_delete=models.CASCADE)
author = models.ForeignKey(User,on_delete=models.CASCADE)

 

再次执行 ,成功,如下图:

TypeError: __init__() missing 1 required positional argument: 'on_delete' 解决办法

付杰
  • ¥ 69.0元
  • 市场价:99.0元
  • ¥ 498.0元
  • 市场价:498.0元
  • ¥ 189.0元
  • 市场价:269.0元
  • ¥ 1999.0元
  • 市场价:2999.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: