DjangoWeb开发的ORMDjango中的ORM对象关系映射(ObjectRelationalMapping,简称ORM)通过使用描述对象与数据库之间映射关系的元数据,自动将面向对象语言程序中的对象持久化为关系。在数据库中。参考文档:https://docs.djangoproject.co...Django数据库配置#DATABASES下的settings文件={"default":{"ENGINE":"django.db.backends.mysql",#这里可以根据实际情况修改,比如换成oracle、PostgreSQL等"NAME":"数据库名","USER":"用户名","PASSWORD":"密码","HOST":"数据库访问权限"Address","POST":3306#Mysql数据库默认使用3306}}buildmodelmodel包含存储数据的重要字段和行为。模型映射到数据库表。Modelexamplefromdjango.dbimportmodelsclassStudents(models.Model):name=models.CharField(max_length=30)#CharField为字段类型,max_length为字段参数选项age=models.IntegerField()gender=models.BooleanField()cs=models.ForeignKey('ClassInfo',on_delete=models.DO_NOTHING)classClassInfo(modes.Modell):title=models.CharField(max_length=30)执行,生成数据表pythonmanage.pymakemigrationspythonmanage.pymigratecommonfields类型描述了AutoField自动增长的IntegerField。通常不需要指定。如果没有指定,Django会自动创建一个名为id的自动增长属性。BooleanField布尔型字段,值为True或False。NullBooleanField支持Null、True、False三个值。CharField(max_length=最大长度)字符串。参数max_length表示最大字符数。TextField是一个大文本域,一般超过4000个字符时使用。IntegerFieldintegerDecimalField(max_digits=None,decimal_places=None)十进制浮点数。参数max_digits表示总位数。参数decimal_places表示小数位数。FloatField浮点数。参数同上DateField:([auto_now=False,auto_now_add=False])date。1)参数auto_now表示每次保存对象时,该字段自动设置为当前时间,用于“最后一次修改”的时间戳。它始终使用当前日期,默认为false。2)参数auto_now_add表示第一次创建对象时,自动设置当前时间为创建时间戳。它始终使用当前日期,默认为false。3)参数auto_now_add和auto_now是互斥的,组合起来会出错。TimeField时间,参数同DateField。DateTimeField日期时间,参数同DateField。FileField上传文件字段。ImageField继承自FileField,对上传的内容进行校验,确保是有效图片。字段选择常用选项选项名称说明default默认值。设置默认值。如果primary_key为True,该字段将成为模型的主键字段。默认值为False,一般作为AutoField的选项使用。unique如果为True,则该字段在表中必须具有唯一值,默认值为False。如果db_index为True,会在表中为该字段创建索引,默认值为False。db_column字段的名称,如果未指定,则为属性的名称。如果null为True,表示允许为空,默认值为False。blank如果为True,该字段允许为空,默认值为False。关系表选项ForeignKey外键关联通常将ForeignKey字段设置为“一对多”的“多”侧。ForeignKey可以与其他表相关联,也可以与自身相关联。optionnamedescriptiontosetthetabletoassociatedto_fieldsetthefieldrelated_nameofthetableofthetabletoassociated逆向操作中使用的字段名,用于替换原来的逆向查询'表名_set'related_query_name在逆向查询操作中,用于替换表名的连接前缀on_delete删除关联表中数据时与当前表关联的行的行为。db_constraint是否在数据库中创建外键约束,默认为True。on_deleteoptionoptionnamedescriptionmodels.CASCADE删除关联数据,与之关联的也删除models.DO_NOTHING删除关联数据,抛出错误IntegrityErrormodels.PROTECT:删除关联数据,抛出错误ProtectedErrormodels.SET_NULL:删除关联数据,关联的值it设置为null(如果FK字段需要设置为nullable)models.SET_DEFAULT:删除关联数据,并将关联值设置为默认值(如果FK字段需要设置默认值)删除关联数据,并将关联值设置为指定值或可执行对象的返回值,设置:models.SET(value)ManyToManyField用于表示多对多关联关系,关联关系是通过数据库中的第三张表建立的。选项名说明设置关联表related_name反向操作中使用的字段名用于替换原来的反向查询'tablename_set'related_query_name反向查询操作中使用的连接前缀用于替换表名对称只用对于多对多自关联,指定是否在内部创建反向操作字段。默认值为真。通过使用ManyToManyField字段时,Django会自动生成一张表来管理多对多关系,同时也支持手动创建第三张表。这种情况下,需要通过through指定第三张表的表名。through_fields设置关联字段。db_table是默认创建第三张表时数据库中的表名。DatetimeField、DateField、TimeField具体参数选项名称说明auto_now_add 配置auto_now_add=True,创建数据记录时,将当前时间加入数据库。auto_now 配置auto_now=True,每次更新数据记录时都会更新该字段。
