Django 2.xx でForeignKeyのon_deleteに関するエラーメモ
はじめに
DjangoGirlsでつまづいたところのメモ。
TypeError: __init__() missing 1 required positional argument: 'on_delete'
が発生した。
その時のコード
class Post(models.Model): author = models.ForeignKey('auth.User') title = models.CharField(max_length=200) text = models.TextField() created_date = models.DateTimeField(default=timezone.now) published_date = models.DateTimeField(blank=True,null=True) def publid(self): self.published_date = timezone.now() self.save def __str__(self): return self.title
環境
原因
ForeignKeyはversion2からは引数としてon_deleteを指定することが必須となっていた。
解決方法
第二引数にon_deleteを渡します。
from django.db import models from django.utils import timezone class Post(models.Model): author = models.ForeignKey('auth.User',on_delete=models.CASCADE) title = models.CharField(max_length=200) text = models.TextField() created_date = models.DateTimeField(default=timezone.now) published_date = models.DateTimeField(blank=True,null=True)
参考にさせていただきました
Django2.0から必須になったon_deleteの使い方 - Django2の実力をつけるチュートリアルサイトDjangoBrothers