TypeError: __init__() missing 1 required positional argument: 'on_delete'
初学Django时,修改models.py后,执行 python manage.py makemigrations learning_logs报错:
File "D:\python_work\learning_log\learning_logs\models.py", line 14, in <modul class Entry(models.Model): File "D:\python_work\learning_log\learning_logs\models.py", line 16, in Entry topic = models.ForeignKey(Topic) TypeError: __init__() missing 1 required positional argument: 'on_delete'
源代码:
1 from django.db import models 2 3 # Create your models here. 4 5 class Topic(models.Model): 6 """用户学习的主题""" 7 text = models.CharField(max_length=200) 8 date_added = models.DateTimeField(auto_now_add=True) 9 10 def __str__(self): 11 """返回模型的字符串表示""" 12 return self.text 13 14 class Entry(models.Model): 15 """学到的有关某个主题的具体知识""" 16 topic = models.ForeignKey(Topic) 17 text = models.TextField() 18 date_added = models.DateTimeField(auto_now_add=True) 19 20 class Meta: 21 verbose_name_plural = 'entries' 22 23 def __str__(self): 24 """返回模型的字符串表示""" 25 return self.text[:50] + "..."
问题原因:
django 升级到2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常:
TypeError: init() missing 1 required positional argument: ‘on_delete’
解决办法:
定义外键的时候需要加上 on_delete=;
即:
topic = models.ForeignKey(Topic,on_delete=models.CASCADE)

浙公网安备 33010602011771号