进入到django自带的related.py中,可以看到 1.ForeignKey 初始化的参数有: to, on_delete, related_name=None, related_query_name...models.Model): author = models.CharField(max_length=250) class Books(models.Model): book = models.ForeignKey...:删除带有外键的信息时,定义了删除的操作: CASCADE:删除作者信息一并删除作者名下的所有书的信息; PROTECT:删除作者的信息时,采取保护机制,抛出错误:即不删除Books的内容; SET_NULL...:只有当null=True才将关联的内容置空; SET_DEFAULT:设置为默认值; SET( ):括号里可以是函数,设置为自己定义的东西; DO_NOTHING:字面的意思,啥也不干,你删除你的干我毛线关系..., db_table=None, swappable=True, **kwargs 、
on_delete 指的是通过 ForeignKey 连接起来的当前对象被删除后,外键字段进行的操作。...# models.py from django.db import models class Article(models.Model): """ 主题表/文章表 """...verbose_name="所属节点") # models.DO_NOTHING, Article 删除 Node 啥也不干 # D:\Program Files\Python36\Lib\site-packages\django...collector.add_field_update(field, value, sub_objs) set_on_delete.deconstruct = lambda: ('django.db.models.SET...只有当当前字段设置 null 设置为 True 才有效,此情况会将 ForeignKey 字段设置为 null :param collector: :param field:
ForeignKey 来自Django官方文档的模型示例: from django.db import models class Blog(models.Model): name = models.CharField...blog = models.ForeignKey(Blog, to_field=Blog.name) ForeignKey.db_constraint Django Model的ForeignKey字段的主要功能是维护一个一对多的关系...只有在db_constraint=True时Django model才会在数据库上建立外键约束, 在该值为False时不建立约束. 默认db_constraint=True....ForeignKey.related_name 这个名称用于让关联的对象反查到源对象. 如果你不想让Django 创建一个反向关联,请设置related_name 为 '+' 或者以'+' 结尾....修改e.blog并调用save方法存入数据库 >>> e.blog = some_blog >>> e.save() 如果ForeignKey 字段有null=True 设置(即它允许NULL值),可以分配
AutoField # 布尔字段,值为True或False Booleanfield # 支持Null、True、False三种值 NullBooleanField # 字符类型,必须提供max_length...,表示允许为空,默认值是False null # 如果为True,则该字段允许为空白,默认值是False blank # 字段的名称,如果未指定,则使用属性的名称 db_column # 若值为True...auto_now 外键字段: # 一对一 OneToOneField # 一对多 ForeignKey # 多对多 ManyToManyField title = models.ForeignKey...# 删除关联数据,与之关联也删除 models.CASCADE # 删除关联数据,引发错误IntegrityError models.DO_NOTHING # 删除关联数据,引发错误ProtectedError...models.PROTECT # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空) models.SET_NULL # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值
BooleanField 布尔字段,值为True或False NullBooleanField 支持Null、True、False三种值 CharField 字符串,参数max_length表示最大字符个数...null参数是数据库层面的,设置null=True之后,表示数据库的该字段可以为空;blank参数是表单层面(HTML),blank=True之后,表示表单填写该字段的时候可以不填。...=True, verbose_name='描述信息') book = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name...,仅在该字段null=True允许为null时可用 SET_DEFAULT设置为默认值,仅在该字段设置了默认值时可用 SET()设置为特定值或者调用特定方法 DO_NOTHING不做任何操作,如果数据库前置指明级联性...,此选项会抛出IntegrityError异常 注意:我们在数据库中,设置外键的时候需要制定另一张表中关联的字段,但是在Django里并没有指定。
---- FileField 字符串(储存文件路径),Django Admin以及ModelForm中提供读取文件夹下文件的功能 关系字段 ---- ForeignKey ...(null=False,null=True) ---- unique 设置唯一。如果设置为unique=True 则该字段在此表中必须是唯一的 。 ---- db_index 设置索引。...---- auto_now 配置上auto_now=True,每次更新数据记录的时候会更新该字段。 ForeignKey参数 ---- to 设置要关联的表。...models.SET_NULL 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空) models.SET_DEFAULT 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值...默认为True。 ---- through 在使用ManyToManyField字段时,Django将自动生成一张表来管理多对多的关联关系。
产生背景 当 ForeignKey 数据过多,手动在后台添加时不方便找到自己的想要数据,遂想要一个可以搜索检索数据功能。...检索文档 https://stackoverflow.com/questions/30214469/in-django-admin-how-to-add-filter-or-search-for-foreign-key-select-box.../50356922 With this you can use the autocomplete_fields on a foreignkey field on your source admin class
常用字段 (1) AutoField 自增的整型字段,必填参数primary_key=True,则成为数据库的主键,无该字段时,django会自动创建主键id字段。...blank=**True**, null=**True**,) **CASCADE:**级联删除。...**PROTECT:**通过引发ProtectedError的子类来防止删引用的对象,是django.db.IntegrityError的子类。...SET_NULL:删除时把外键置为null,当null=True时才可以使用。 SET_DEFAULT:把外键置为默认值,必须要设置默认值时才可以使用。...(24) OneToOneField 一对一关系的关系,从概念上与带有unique=True的ForeignKey相似,但是在关系的另一侧(主表数据)直接返回单个对象。
" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL ); 一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名...Django支持MySQL5.5及更高版本。 Django ORM 常用字段和参数 常用字段 AutoField int自增列,必须填入参数 primary_key=True。...- bigint自增列,必须填入参数 primary_key=True 注:当model中如果没有自增列,则自动会创建一个列名为id的列 from django.db...models.CASCADE 删除关联数据,与之关联也删除 models.DO_NOTHING 删除关联数据,引发错误IntegrityError models.PROTECT 删除关联数据,引发错误ProtectedError...models.SET_NULL 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空) models.SET_DEFAULT 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值
=True, verbose_name='描述信息') hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name...null是数据库范畴的概念,blank是表单验证范畴的 5) 外键 一般我用CASCADE 在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引用表数据如何处理,在django.db.models...设置为NULL,仅在该字段null=True允许为null时可用 SET_DEFAULT 设置为默认值,仅在该字段设置了默认值时可用 SET() 设置为特定值或者调用特定方法,如 from...get_user_model().objects.get_or_create(username='deleted')[0] class MyModel(models.Model): user = models.ForeignKey...settings.AUTH_USER_MODEL, on_delete=models.SET(get_sentinel_user), ) DO_NOTHING 不做任何操作,如果数据库前置指明级联性,此选项会抛出IntegrityError
(InstanceTask, related_name='instancetask_instancetaskmap', blank=True, null=True,...help_text='副本任务', on_delete=models.SET_NULL) 对于上面的model,如果要在django admin中展示ghosts信息,那么在list_display中直接加入...对于foreignkey同样可以使用这样的方式进行反向查询展示所有相关的model。...admin Foreignkey ManyToMany list_display展示》 * 本文链接:https://h4ck.org.cn/2019/12/django-admin-foreignkey-manytomanykey-list_display...---- 分享文章: 相关文章: Django REST framework foreignkey 序列化 django raw_id_fields 显示名称而不是id(raw_id_fields:
中有很多字段,如下: 字段类 默认小组件 说明 AutoField N/A 根据 ID 自动递增的 IntegerField,必填参数primary_key=True,则成为数据库的主键,无该字段时,django...如果想接受 null 值,使用 NullBooleanField 。 CharField TextInput 字符串字段,针对长度较小的字符串。大量文本应该使用 TextField 。...注:数据参考来源w3cschool 上面的字段很容易让人想起数据库中的数据类型,所以这些字段也就会有约束,常用的约束如下: null:字段是否可以为空 blank:是否允许用户输入为空 db_column...(book,on_delete=models.CASCADE) ForeignKey提供了多个参数,如下: ForeignKey() to # 要进行关联的表名...- models.CASCADE,删除关联数据,与之关联也删除 - models.DO_NOTHING,删除关联数据,引发错误IntegrityError
当dataType指定为json后,1.4+以上的jquery版本对json格式要求更加严格.如果不是严格的json格式,就不能正常执行success回调函数.
=True, verbose_name='描述信息') book = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name...会自动创建属性名为id的自动增长属性 BooleanField 布尔字段,值为True或False NullBooleanField 支持Null、True、False三种值 CharField 字符串...unique 如果为True, 这个字段在表中必须有唯一值,默认值是False null是数据库范畴的概念,blank是表单验证范畴的 6) 外键 在设置外键时,需要通过on_delete选项指明主表删除数据时...,来阻止删除主表中被外键应用的数据 SET_NULL设置为NULL,仅在该字段null=True允许为null时可用 SET_DEFAULT设置为默认值,仅在该字段设置了默认值时可用 SET()设置为特定值或者调用特定方法...DO_NOTHING不做任何操作,如果数据库前置指明级联性,此选项会抛出IntegrityError异常 二、模型类迁移 将模型类同步到数据库中。
之前已经写过一篇关于Django外键的文章,但是当时并没有介绍如何根据外键对数据的操作,也就是如何通过主表查询子表或者通过子表查询主表的信息 首先我定义了两个模型,一个是老师模型,一个是学生模型,...: 第一步需要做的自然还是需要将我们的模型导入进来,并获取老师的相关信息 返回一个teacher对象,接下来就是查询teacher相关联的学生对象,在这里有一个需要注意的点,django
" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL ); 一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名...Django支持MySQL5.5及更高版本。 Django中ORM常用的字段和参数 常用的字段 AutoField:int自增型,必须填入参数 primary_key = True 。...models.CASCADE 删除关联数据,与之关联也删除 models.DO_NOTHING 删除关联数据,引发错误IntegrityError models.PROTECT 删除关联数据,引发错误...意思是用于替换本类的表名(同ForeignKey字段)。 symmetrical:仅用于多对多自关联时,指定内部是否创建反向操作的字段。默认为True。...默认值为True,这个选项为True时Django可以对数据库表进行 migrate或migrations、删除等操作。
前言 前面在admin后台页面通过设置外键,可以选择下拉框的选项,本篇主要讲解关于外键(ForeignKey)的查询 models设计 在上一篇的基础上新增一个BankName表,Card表通过外键关联到...models.CharField(max_length=10, verbose_name="姓名", default="") add_time = models.DateField(auto_now=True..., verbose_name="添加时间") bank_info = models.ForeignKey(BankName, on_delete=models.CASCADE, default=...makemigrations 和migrate,同步数据 python manage.py makemigrations python manage.py migrate shell模式新增测试 为了调试方便,可以使用django...models.CharField(max_length=10, verbose_name="姓名", default="") add_time = models.DateField(auto_now=True
sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine, Column, Integer, String, ForeignKey...# 添加到session session.commit() # 提交到数据库 如果name字段(nullable=False)不传,会抛出异常:"Column 'name' cannot be null..." sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) (1048, "Column 'name' cannot be null")...session.commit() # 提交到数据库 重复添加相同的tel,会抛出异常: 1062, "Duplicate entry '10086' for key 'tel'" sqlalchemy.exc.IntegrityError...: (pymysql.err.IntegrityError) (1062, "Duplicate entry '10086' for key 'tel'") [SQL: INSERT INTO user
= models.ForeignKey("UserInfo", verbose_name="创建者", on_delete=models.SET_NULL, blank=True, null=True...=models.SET_NULL, blank=True, null=True) name = models.CharField(verbose_name="调查问题", max_length=...("Survery", verbose_name="问卷", blank=True, null=True, on_delete=models.SET_NULL) student_name = models.ForeignKey...models.ForeignKey('SurveryItem', verbose_name="调查项", blank=True, null=True, on_delete=models.SET_NULL...) content_type = models.ForeignKey(ContentType, blank=True, null=True) object_id = models.PositiveIntegerField
翻译整理自: simpleisbetterthancomplex.com Django Model API 中提供了blank和null两个参数, 非常容易混淆。...虽然两者的是有区别的, 但一个拥有null=True和blank=False的字段是完全没有问题的。...在数据库级别上, 该字段可以为 NULL, 但在应用程序级别上, 它是必填字段(前提你通过 Django 标准的 Form 进行判断)。...大多数开发人员都对基于字符串的字段(CharField和TextField)定义null=True, 这其实是没有必要的, 应该避免这样做,因为 Django约定使用空字符串设置空值, 而非Null....) # 可选填写 (不要设置null=True) birth_date = models.DateField(null=True, blank=True) # 可选填写 (这里你应该设置null
领取专属 10元无门槛券
手把手带您无忧上云