Django2以降の変更点で気づいたポイント:path設定, ForeignKeyのon_delete
エラーが出たところから報告
もしかしたら、Django2系特有じゃないかもしれないのですが、Django2系扱って「あれ?」と思ったところが同じ人には役立つかもです^^
変更点1:urls.pyのパスの指定の仕方が変わった"path"を使ったinclude
Django1.8
settings.pyのあるディレクトリのurls.py
from django.conf import settings from django.conf.urls import include, url from django.conf.urls.static import static from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^', include('<アプリ名>.urls', namespace='<アプリ名>')), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Django2.0
settings.pyのあるディレクトリのurls.py
from django.contrib import admin from django.urls import include, path from django.conf.urls.static import static from django.conf import settings urlpatterns = [ path('admin/', admin.site.urls), path('', include('<アプリ名>.urls')), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Django1系と2系でpathという新しい指定の仕方が登場しています。includeとpathの組み合わせは上記でエラーなく行けました。一方でstaticファイルの指定方法は一緒でした。
変更点2:models.pyでForeignKeyを使う時、on_deleteは必須になった模様
例
models.ForeignKey(ProfileInfo, blank=True, null=True, on_delete=models.SET_NULL)
今まではこの引数設定しなくてもエラーにはならなかったので、多分必須になったと思われます。
一応レパートリーをまとめておきます。 - on_delete=models.SET_NULL:ForeignKeyの当該値のある記事があったらForeignKeyはnullにする - on_delete=models.SET_DEFAULT,default=(ForeignKeyのobject) - on_delete=models.CASCADE:ForeignKeyの当該値のある記事も一緒に削除 - on_delete=models.PROTECT:ForeignKeyの当該値のある記事があったら削除不可
参考にさせていただいた記事