TypeError: __init__() missing 1 required positional argument: 'on_delete'
时间: 2023-08-18 09:34:17 浏览: 110
这个错误一般是由于在定义 Django 模型的时候,ForeignKey 字段没有指定 on_delete 参数导致的。在 Django 中,ForeignKey 字段必须指定 on_delete 参数,用于指定当关联的对象被删除时,ForeignKey 字段应该怎么处理。常见的选项包括 CASCADE、PROTECT、SET_NULL 等。例如:
```
class MyModel(models.Model):
foreign_key = models.ForeignKey(OtherModel, on_delete=models.CASCADE)
```
在这个例子中,当关联的 OtherModel 对象被删除时,MyModel 对象也会被删除(即使用 CASCADE 选项)。
相关问题
报错:TypeError: __init__() missing 1 required positional argument: 'on_delete'
这个错误通常是由于在定义模型字段时,没有正确指定关联模型和on_delete参数导致的。on_delete参数用于指定在关联模型中删除记录时的操作行为,例如CASCADE、PROTECT、SET_NULL等。
解决方法:
1.检查模型字段定义,确保正确指定了关联模型和on_delete参数。
2.如果使用的是Django 2.0或更高版本,建议使用on_delete=django.db.models.CASCADE等参数。
3.如果使用的是Django 1.9或更早版本,建议使用on_delete=models.CASCADE等参数。
报错:admin = models.ForeignKey(TypeError: __init__() missing 1 required positional argument: 'on_delete'
这个报错提示缺少一个必需的参数'on_delete',在ForeignKey中必须指定on_delete参数,表示当关联对象被删除时的处理方式。
例如:
```
class MyModel(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
```
在这个例子中,当关联的User对象被删除时,将会级联删除MyModel对象。你可以根据具体情况选择其他的on_delete处理方式,比如设置为models.SET_NULL、models.PROTECT等。
修改代码中的ForeignKey定义,指定on_delete参数即可。
阅读全文