zoukankan      html  css  js  c++  java
  • django2.0变动数据库设置外键报错

    1、报错TypeError: __init__() missing 1 required positional argument: 'on_delete'

        django2.0以后创建数据库外键的时候必须要加on_delete参数,参数具体含义:

    • CASCADE:这就是默认的选项,级联删除,你无需显性指定它。
    • PROTECT: 保护模式,如果采用该选项,删除的时候,会抛出ProtectedError错误。
    • SET_NULL: 置空模式,删除的时候,外键字段被设置为空,前提就是blank=True, null=True,定义该字段的时候,允许为空。
    • SET_DEFAULT: 置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。
    • SET(): 自定义一个值,该值当然只能是对应的实体了

    一般的设置为  on_delete=models.CASCADE  就可以了

    补充说明:关于SET()的使用

    **官方案例**
    1 def get_sentinel_user():
    2     return get_user_model().objects.get_or_create(username='deleted')[0]
    3 
    4 class MyModel(models.Model):
    5     user = models.ForeignKey(
    6         settings.AUTH_USER_MODEL,
    7         on_delete=models.SET(get_sentinel_user),
    8     )
    View Code

     2、django中verbose_name是什么意思?和label有什么区别?

       label是这个Field如果在form表单验证中会显示在模板的lable、而verbose_name在form中不会显示、只是作为一种说明而已

     
  • 相关阅读:
    java基础_面试题笔记
    ACM-ICPC 2018 Xuzhou Online Contest题解
    覆盖点问题总结
    2018icpc沈阳网络赛题解(转发)
    树链剖分
    树状数组
    线段树板子
    sdoi2016生成魔咒
    洛谷3804
    大佬博文收集
  • 原文地址:https://www.cnblogs.com/qiangayz/p/9113937.html
Copyright © 2011-2022 走看看