zoukankan      html  css  js  c++  java
  • missing 1 required positional argument: 'on_delete'报错解决方案

    最近在使用Python的Django框架开发web站点,通过models.py文件建表后,执行数据库迁移(命令行:mange.py makemigrations)时报错,下面是查看官方文档后找到的解决方案。

    官方文档:Model field reference

     

    报错内容:

    1     class Guest(models.Model):
    2   File "C:Usersdellguestsignmodels.py", line 18, in Guest
    3     event = models.ForeignKey(Event)                     # 关联发布会
    4 TypeError: __init__() missing 1 required positional argument: 'on_delete'

     

     models.py文件:

     1 from django.db import models
     2 
     3 # Create your models here.
     4 # 发布会表
     5 class Event(models.Model):
     6     name = models.CharField(max_length=100)              # 发布会标题
     7     limit = models.IntegerField()                        # 参加人数
     8     status = models.BooleanField()                       # 状态
     9     address = models.CharField(max_length=200)           # 地址
    10     start_time = models.DateTimeField('event time')      # 发布会时间
    11     create_time = models.DateTimeField(auto_now=True)    # 创建时间(自动获取当前时间)
    12 
    13     def __str__(self):
    14         return self.name
    15 
    16 # 嘉宾表
    17 class Guest(models.Model):
    18     event = models.ForeignKey(Event)                                 # 关联发布会
    19     realname = models.CharField(max_length=64)                       # 姓名
    20     phone = models.CharField(max_length=16)                          # 手机号
    21     email = models.EmailField()                                      # 邮箱
    22     sign = models.BooleanField()                                     # 签到状态
    23     create_time = models.DateTimeField(auto_now=True)                # 创建时间(自动获取当前时间)
    24 
    25 class Meta:
    26     unique_together = ("event", "phone")
    27 
    28 def __str__(self):
    29     return self.realname

    解决方法:将报错提示的models文件第18行修改为下面的内容即可:

     event = models.ForeignKey('Event','on_delete=models.CASCADE,') 

    报错原因:

     classForeignKey(to,on_delete,** options)  

    多对一的关系,需要两个位置参数:模型相关的类和on_delete选项。(on_delete实际上并不需要,但是不提供它会给出弃用警告,这在Django 2.0中将是必需的,1.8及以前的版本不需要

    要创建递归关系,即:与自身具有多对一关系的对象使用。 models.ForeignKey('self', on_delete=models.CASCADE) 

    PS:Django的版本更新比较频繁,每次版本迭代都有些改动,有问题直接查官方文档或者Stack Overflow,基本都可以解决。

  • 相关阅读:
    vue table 固定首列和首行
    手机号隐藏中间4位变成****
    微信小程序填坑之page[pages/XXX/XXX] not found.May be caused by
    table表格固定前几列,其余的滚动
    大文件切片功能
    js如何判断数字是否有小数
    获取当前时间前后6个月的时间数组
    为你的mail server增加SPF记录
    给hmailserver添加DKIM签名
    HttpWatch工具简介及使用技巧
  • 原文地址:https://www.cnblogs.com/imyalost/p/8506766.html
Copyright © 2011-2022 走看看