Django学习错误汇总(一)

时间:2019-01-23
本文章向大家介绍Django学习错误汇总(一),主要包括Django学习错误汇总(一)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

创建和迁移数据库时,使用命令python manage.py migrate时,报错,报错信息如下:

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

其中model.py的代码如下:

from django.db import models
class Category(models.Model):
    name = models.CharField(max_length=128, unique=True)

    def __str__(self):
        return self.name

class Page(models.Model):
    category = models.ForeignKey(Category)
    title = models.CharField(max_length=128)
    url = models.URLField()
    views = models.IntegerField(default=0)

    def __str__(self):
        return self.title

查询stackoverflow得知,ForeignKey中必须要加上 on_delete=models.CASCADE,

修改代码后问题解决

修改代码如下:

from django.db import models
class Category(models.Model):
    name = models.CharField(max_length=128, unique=True)

    def __str__(self):
        return self.name

class Page(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE,)
    title = models.CharField(max_length=128)
    url = models.URLField()
    views = models.IntegerField(default=0)

    def __str__(self):
        return self.title

原因在于,在Django 2.0中on_delete成为必须参数,在1.9以前的版本中,它的默认值是CASCADE。