1. 导包问题 (path包)
根据官方文档创建 polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
发现两处import报错from django.urls import path和from django.urls import include, path
原因是我安装的 Django-1.10.3版本太低了,pip install -U Django 将旧版本卸载重装新版本之后就ok了
2、pycharm有自带的database管理工具
执行python manage.py migrate之后会生成一个db.sqlite3文件,打开右侧的database操作区,把文件拖进去
image.png
3、执行python manage.py makemigrations 创建迁移文件报错TypeError: init() missing 1 required positional argument: 'on_delete'
原因是django2.0之后models中创建外键必须加上on_delete参数
sgrade = models.ForeignKey(Grade,on_delete=models.CASCADE)
on_delete各个参数含义
on_delete=None, # 删除关联表中的数据时,当前表与其关联的field的行为
on_delete=models.CASCADE, # 删除关联数据,与之关联也删除
on_delete=models.DO_NOTHING, # 删除关联数据,什么也不做
on_delete=models.PROTECT, # 删除关联数据,引发错误ProtectedError
# models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)
on_delete=models.SET_NULL, # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理)
# models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')
on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理)
on_delete=models.SET, # 删除关联数据,
a. 与之关联的值设置为指定值,设置:models.SET(值)
b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
网友评论