️ TypeError: argument of type ‘NoneType’ is not iterable - NoneType类型的参数不可迭代完美解决方法 摘要 大家好,我是默语,擅长全栈开发...这一错误通常出现在我们尝试对空值 (NoneType) 进行迭代操作时。本文将详细分析此错误的根源,提供有效的解决方案,并探讨如何在日常开发中避免类似错误的发生。...关键词:TypeError、NoneType、迭代、Python 错误、错误处理、调试技巧 引言 ✨ 在Python开发中,TypeError 是一种常见的错误类型,尤其是当我们错误地操作 None 时...错误的背景与成因 1.1 什么是 NoneType? 在Python中,NoneType 是表示空值的一种数据类型。它只有一个值,就是 None,通常用于表示"没有值"或"空"。...print(item) 2.3 默认参数为 None ️ 函数的默认参数通常被设置为 None,但在函数内部如果不检查这个值而直接进行迭代操作,也会引发错误。
,必须加参数max_length age = models.IntegerField() #整数类型 def __str__(self): # 获取Person... – 可以为空的布尔值 CharField – 字符串类型 必须提供max_length参数,字符长度 TextField – 文本类型 EmailField – 一个带有检查...参数 null 为True时,数据库里的字段可以为空,如果想要生效需要设置blank=True。...,但是数据库可以改 error_messages 自定义错误信息,是字典类型 help_text 该字段的提示信息 unique 值唯一 verbose_name 显示的字段名称 更多字段查看官网...删除学校,会把对应的学生也给删掉, 因为 on_delete= CASCADE。会删除包含foreignKey的学生对象。
Django 系列博客(十三) 前言 本篇博客介绍 Django 中的常用字段和参数。 ORM 字段 AutoField int 自增列,必须填入参数 primary_key=True。...中提供验证 IPV4 机制 GenericIPAddressField(Field) - 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6 - 参数: protocol...(choices=[(0, '何穗'),(1, '大表姐'),],default=1) error_messages 自定义错误信息(字典类型),从而定制想要显示的错误信息;...", 'invalid': '格式错误'} validators 自定义错误验证(列表类型),从而定制想要的验证规则 from django.core.validators...) 关系字段 ForeignKey 外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多'中'多'的一方。
所以你安装该设配器之后,运行项目会报出错误。Django 官网建议使用替代品 mysqlclient。mysqlclient 是 MySQLdb 的一个分支,最主要是它支持 Python 3。...Django 内置了几十种内置字段类型。常用的类型如下: 1) AutoField:一个根据实际ID自动增长的 IntegerField 。如果表中没有设置主键时,将会自动添加一个自增主键。...on_delete 现在可以用作第二个位置参数(之前它通常只是作为一个关键字参数传递). 在Django 2.0中,这将是一个必传的参数。...3.4 字段选项 有些字段会有些特殊参数,但所有字段类型都又些通用的可选选项。先是常用的可选选项。 1)null :如果该参数设置为 True,Django将会把数据库中的空值保存为 NULL。...5)default:设置该字段的默认值。 6)由二项元组构成的一个可迭代对象(列表或元组),用来给字段提供选择项。 如果设置了 choices,默认的表单将是一个选择框。
---- FileField 字符串(储存文件路径),Django Admin以及ModelForm中提供读取文件夹下文件的功能 关系字段 ---- ForeignKey ...外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多'中'多'的一方。 ...GenericIPAddressField(Field) - 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6 - 参数:...类型的字段 cname = FixedCharField(max_length=25) 参数 公共参数 ---- null 用于表示某个字段是否可以为空。...---- auto_now 配置上auto_now=True,每次更新数据记录的时候会更新该字段。 ForeignKey参数 ---- to 设置要关联的表。
,如果数据库迁移,只需要更换Django的数据库引擎即可; 一、Django连接MySQL 1、创建数据库 (注意设置 数据的字符编码) 由于Django自带的orm是data_first类型的ORM,...- 字符串类型,Django Admin以及ModelForm中提供验证机制 IPAddressField(Field) - 字符串类型,Django Admin以及ModelForm...Django Admin以及ModelForm中提供读取文件夹下文件的功能 - 参数: path, 文件夹路径...二进制类型 字段 2、Django admin级别生效 针对 dango_admin生效的参数(正则匹配)(使用Django admin就需要关心以下参数!!))...错误信息 validators 自定义错误验证(列表类型),从而定制想要的验证规则 from django.core.validators import
本示例中的CREATE TABLE SQL使用PostgreSQL语法进行格式化,但值得注意的是,Django会根据配置文件中指定的数据库后端类型来生成相应的SQL语句。...Django支持MySQL5.5及更高版本。 Django ORM 常用字段和参数 常用字段 AutoField int自增列,必须填入参数 primary_key=True。...关系字段 ForeignKey 外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多'中'多'的一方。...字段参数 to 设置要关联的表。 to_field 设置要关联的字段。 on_delete 同ForeignKey字段。 ManyToManyField 用于表示多对多的关联关系。...字段参数 to 设置要关联的表 related_name 同ForeignKey字段。 related_query_name 同ForeignKey字段。
): - 字符串类型,Django Admin以及ModelForm中提供验证机制 IPAddressField(Field) - 字符串类型,Django Admin以及ModelForm中提供验证...IPV4 机制 GenericIPAddressField(Field) - 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6 - 参数: protocol...、连接符(减号) CommaSeparatedIntegerField(CharField) - 字符串类型,格式必须为逗号分割的数字 UUIDField(Field) - 字符串类型,Django Admin...'何穗'),(1, '大表姐'),],default=1) error_messages 自定义错误信息(字典类型),从而定制想要显示的错误信息; 字典健:null, blank,...", 'invalid': '格式错误'} validators 自定义错误验证(列表类型),从而定制想要的验证规则 from django.core.validators import
除了上面的字符类型,其他常见的字段类型,在Django都有对应的*Field来表达,比如TextField、DateField、DateTimeField、IntegerField、DecimalField...数字类型的限制条件有max、min、max_digits、decimal_places。这些限制条件都通过参数的形式传给属性。...有一些限制条件是Django提供的,并没有数据库层面的对应物,比如blank。 (当blank参数为真时,对应字段可以为留为空白。) 在基本的模型设计上,Django ORM没有留什么坑。...需要注意的是,在Django ORM中,只能通过ForeignKey来定义多对一关系,不能显示地定义一对多关系。但你可以使用模型对象的*_set语法来反向调用多对一关系。...真希望有一种显式说明关系的办法,降低读代码时的认知负担。 查询 Django ORM可以通过一些方法来实现。其中的很多方法返回的是Django自定义的QuerySet类的迭代器。
在 Django 中,如果你有一个模型类,并希望找出哪些其他模型定义了指向该模型的外键,可以使用 Django 的元选项 (Meta) 和 ForeignKey 的反向关系属性。...2、解决方案要做到这一点,我们可以使用 Django 的 ForeignKey.get_attname() 方法。该方法返回外键字段的名称。...Args: model: Django 模型。 Returns: ForeignKey: 指向 Foo 对象的外键。...它首先迭代模型的所有字段,然后检查每个字段是否指向 Foo 对象。如果找到这样的字段,则将其返回。如果找不到这样的字段,则引发 FieldDoesNotExist 异常。...模型作为参数并返回指向 Foo 对象的外键。
必填参数primary_key=True,则成为数据库的主键,无该字段时,django自动创建,一个model不能有两个该字段。...help_text: 字段的提示信息 choices:显示选择框的内容,用不变动的数据放在内存中以避免跨表操作 verbose_name: 显示的字段名称 error_messages:自定义错误信息...(字典类型) validators:自定义错误验证(列表类型) 注:数据参考来源w3cschool 四、关联关系 django提供了三种数据库关联关系,即多对一,一对一,多对多,废话不多说,就是干。...1.多对一 因为是关联关系,所以我们必须指定两个类来进行相互操作,这里涉及到一个外键的操作,即ForeignKey字段,而且外键要定义在多的一方。...(book,on_delete=models.CASCADE) ForeignKey提供了多个参数,如下: ForeignKey() to # 要进行关联的表名
): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。...,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列 values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列...() 返回一个可迭代的元祖序列 返回具体对象的 get() first() last() 返回布尔值的方法有: exists() 返回数字的方法有 count() 双下划线操作 models.Tb1.objects.filter...Class, null=True) 此时就有clear()和remove()方法: >>> models.Publisher.objects.first().book_set.clear() 注意:对于所有类型的关联字段...所有提供给查询函数的参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数的前面。 例如:查询出版年份是2017或2018,书名中带物语的所有书。
这是不可否认的。 但我们不能指望某个工具能一劳永逸地解决所有问题,一些特殊问题还是需要特殊处理的。 但是在整个软件开发过程中需要特殊处理的情况应该都是很少的,否则所谓的工具也就失去了它存在的意义。...Django支持MySQL5.5及更高版本。 Django中ORM常用的字段和参数 常用的字段 AutoField:int自增型,必须填入参数 primary_key = True 。...GenericIPAddressField(Field) - 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6 - 参数:...关系字段 ForeignKey 外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多'中'多'的一方。 ...字段参数 to:设置要关联的表; related_name:反向操作时,使用的字段名,用于代替原反向查询时的'表名_set'(同ForeignKey字段)。
字段的自述名 除了 ForeignKey, ManyToManyField 和 OneToOneField 之外,其余每个字段类型都接受一个排在首位的可选的位置参数–这就是字段的自述名。...ForeignKey 需要一个位置参数:与该 model 关联的类。...zip_code = models.ForeignKey(ZipCode) 字段命名的限制 Django 对字段的命名只有两个限制: 字段名不可以是 Python 的保留字,否则会导致 Python 语法错误...字段名称不可以包含连续多个下划线,因为这与 Django 查询时所用的筛选条件语法相冲突。...自定义字段类型 如果 Django 自带的字段类型不能满足你的应用,或者你希望使用一些不常见的数据库列类型,那你可以创建自定义的字段类型。
,如果符合筛选条件的对象超过一个或者没有都会抛出错误。...,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列 values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列...() 返回一个可迭代的元祖序列 返回具体的对象 get() first() last() 返回布尔值的方法 exists() 返回数字的方法有 count() 单表查询神奇的双下划线 models.Tb1...Class, null=True) 此时就有clear()和remove()方法: >>> models.Publisher.objects.first().book_set.clear() 注意: 对于所有类型的关联字段...所有提供给查询函数的参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数的前面。 例如:查询出版年份是2017或2018,书名中带物语的所有书。
大家好,又见面了,我是你们的朋友全栈君。 字段类型 字段类型指使用Django ORM创建数据库时支持的数据字段类型。...(6) IntegerField 整数类型字段,数值范围是—2147483648~2147483647. (7) CharField 字符类型,必须提供max_length参数。代表字符的最大长度。...(13) FileField 文件上传字段,不支持primary_key参数,使用该参数时将引发错误。 有两个可选参数: upload_to:设置上传目录和文件名的方法,并且可以通过两种方法进行设置。...当删除由a引用的对象时,Django将模拟on_delete参数指定的SQL约束的行为。...Django会在DELETE CASCADE上模拟 SQL约束的行为,并删除包含ForeignKey的对象。 **DO_NOTHING:**不采取行动。
在上面的例子中,我们并没有传入blog参数给create()。Django会明白新的 Entry对象blog 应该添加到b中。...对于ForeignKey对象,该方法接受一个bulk参数来控制它如果执行操作。如果为True(默认值),QuerySet.update()会被使用。...就像 remove() 方法一样,clear()只能在 null=True的ForeignKey上被调用,也可以接受bulk关键词参数。...注意 注意对于所有类型的关联字段,add()、create()、remove()和clear()都会马上更新数据库。换句话说,在关联的任何一端,都不需要再调用save()方法。...同样,如果你再多对多关系中使用了中间模型,一些关联管理的方法会被禁用。 直接赋值 通过赋值一个新的可迭代的对象,关联对象集可以被整体替换掉。
定义属性 概述 ·django根据属性的类型确定以下信息 ·当前选择的数据库支持字段的类型 ·渲染管理表单时使用的默认html控件 ·在管理站点最低限度的验证 ·django...的查询方式,不允许使用连续的下划线 库 ·定义属性时,需要字段类型,字段类型被定义在 django.db.models.fields目录下,为了方便使用, 被导入到django.db.models...auto_now, and default 这些设置是相互排斥的,不可同时使用。...他们之间的任何组合将会发生错误的结果 ·TimeField ·使用Python的datetime.time实例表示的时间,参数同DateField ·DateTimeField...·属性命名限制 ·遵循标识符规则 ·由于django的查询方式,不允许使用连续的下划线 库 ·定义属性时,需要字段类型,字段类型被定义在 django.db.models.fields