一对多(ForeignKey)
class ForeignKey(ForeignObject): def __init__(self, to, on_delete, related_name=None, related_query_name=None, limit_choices_to=None, parent_link=False, to_field=None, db_constraint=True, **kwargs): super().__init__(to, on_delete, from_fields=['self'], to_fields=[to_field], **kwargs)
一对一(OneToOneField)
class OneToOneField(ForeignKey): def __init__(self, to, on_delete, to_field=None, **kwargs): kwargs['unique'] = True super().__init__(to, on_delete, to_field=to_field, **kwargs)
从上面外键(ForeignKey)和一对一(OneToOneField)的参数中可以看出,都有on_delete参数,而 django 升级到2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常:
TypeError: __init__() missing 1 required positional argument: 'on_delete'
因此,整理一下on_delete参数的各个值的含义:
on_delete=None, # 删除关联表中的数据时,当前表与其关联的field的行为 on_delete=models.CASCADE, # 删除关联数据,与之关联也删除 on_delete=models.DO_NOTHING, # 删除关联数据,什么也不做 on_delete=models.PROTECT, # 删除关联数据,引发错误ProtectedError # models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True) on_delete=models.SET_NULL, # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理) # models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值') on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理) on_delete=models.SET, # 删除关联数据, a. 与之关联的值设置为指定值,设置:models.SET(值) b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
多对多(ManyToManyField)
class ManyToManyField(RelatedField): def __init__(self, to, related_name=None, related_query_name=None, limit_choices_to=None, symmetrical=None, through=None, through_fields=None, db_constraint=True, db_table=None, swappable=True, **kwargs): super().__init__(**kwargs)
因为多对多(ManyToManyField)没有 on_delete 参数,所以略过不提.
以上这篇对django2.0 关联表的必填on_delete参数的含义解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
我试图实现下面的python代码,但出现了以下错误。有人能帮我吗? 我得到的错误: 文件“C:\Users\Lenovo\Anaconda2\envs\example\u env\lib\site packages\keras\layers\convolutional.py”,第388行,在init super(Convolution2D,self)中。初始(**kwargs) 文件“C:\Use
问题内容: 我目前正在阅读基于Tensorflow的苗条库的源代码,并且它们将参数用于很多方法,例如here。 从API页面,我可以看到: 该上下文管理器验证(可选)值是否来自同一图,确保该图是默认图,并推送名称范围和变量范围。 我的问题是:仅检查来自的变量是否来自同一张图?有哪些用例?为什么有人需要它? 问题答案: variable_scope参数有助于确保变量的唯一性并在需要时重用变量。 是的
我正在学习Spring Framework,我得到了以下错误消息: com.example.demo.AppUser.AppUserService中的构造函数的参数0需要类型为“com.example.demo.AppUser.AppUserRepository”的bean,但找不到该bean。 这是我的AppUserRepository 如果有人知道问题出在哪里,请帮帮我
我试图弄清楚如何让Swagger解析一个带有未定义数量的值的关联数组。 我有类似的案例,不同的是这些其他案例是完全规则的(我事先知道所有属性的名称)。然而,在这种情况下,我可能不知道(实际上我不想知道)哪些可能是值的名称。 JSON的一个例子,它有一个带有未定义数量的语言代码的关联数组。每个语言代码键都有一组未定义的翻译,每个翻译都有一个键和值。在这种情况下,“描述”和“步行访问”是翻译的关键。但
我想知道这个表达式是否正确,是否意味着:我在字段状态上加了一个写锁,然后更改它。如果不是,我想知道参数的含义是什么,因为我总是看到这个。
我需要用Kafka做一些性能测试。 record_size:100 server_address:bootstrap.servers=localhost:9092 buffer.memory=67108864 但我并不否认: 谢谢