Models里面的外键字段,没有设置on_delete属性,建表时会报错

来源:3-6 migrations原理及表生成

青了葱的老王

2018-02-18

Models里面的外键字段,没有设置on_delete属性,在makemigrations时,就会立即报错,我网上搜了下,除了补齐之外没有别的办法。不知道使用课程里面的代码的时候,大家是怎么做到顺利建表的?

写回答

4回答

易易追随者

2018-08-13

解决办法:

在所有带有外键的字段中:

1:如果有 null=True 参数,则添加语句 on_delete=models.SET_NULL

2:如果没有 null=True 参数,则添加语句 on_delete=models.CASCADE

也就是说所有外键字段中必须设定 on_delete = xxxxx 参数。

原因on_delete=models.SET_NULL:如果外键对象被删除则当前的字段被设置为 null,对象不会一起被Django删除,只是将外键表示为 null。

on_delete=models.CASCADE:如果外键对象被删除,则当前对象与外键对象一起被删除。


具体解释可参见:

https://medium.com/@ajrbyers/django-fk-on-delete-defaults-to-cascade-1c1506aae7c7


另外,所有字段必须设定 max_length 字段,否则报错。

最后迁移成功。

0
1
bobby
赞一个
2018-08-14
共1条回复

bobby

2018-02-22

目前不要使用django2.0 会遇到一些问题

0
0

青了葱的老王

提问者

2018-02-18

仅在Django2.0.2出现这个问题,1.11应该就没问题了吧。。。。

0
0

青了葱的老王

提问者

2018-02-18

解决办法的参考文档

点击查看

0
0

Python前后端分离开发Vue+Django REST framework实战

Django REST framework课程视频,RESTFul API前后端分离开发

2873 学习 · 2461 问题

查看课程