请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答 回答被采纳积分+3

4回答

易易追随者 2018-08-13 05:34:24

解决办法:

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

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 回复 有任何疑惑可以回复我~
  • bobby #1
    赞一个
    回复 有任何疑惑可以回复我~ 2018-08-14 11:37:32
bobby 2018-02-22 10:05:56

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

0 回复 有任何疑惑可以回复我~
提问者 青了葱的老王 2018-02-18 20:44:55

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

0 回复 有任何疑惑可以回复我~
提问者 青了葱的老王 2018-02-18 19:48:52

解决办法的参考文档

点击查看

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信