TypeError: __init__() missing 1 required positional argument: 'on_delete'
时间: 2023-06-18 18:05:29 浏览: 132
这个错误通常是由于在定义Django模型(Model)时,ForeignKey字段缺少on_delete参数引起的。在ForeignKey字段中,必须指定on_delete选项,来确定当关联对象(被引用对象)被删除时,数据库如何处理相关对象。
例如,下面的代码中,Book模型中的author字段是一个ForeignKey,但是没有指定on_delete选项,这将导致上述TypeError错误:
```python
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author) # 缺少on_delete选项
```
要解决这个问题,只需要在ForeignKey字段中指定on_delete选项即可。例如,可以将on_delete设置为CASCADE,表示级联删除关联对象:
```python
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE) # 指定on_delete选项
```
除了CASCADE之外,还有其他几种选项可以用于on_delete,例如PROTECT、SET_NULL、SET_DEFAULT等。具体选项的含义和使用方法,请参考Django官方文档。
阅读全文