【Django】django框架中使用ORM设计数据库的模型

本文介绍了Django中常见的模型字段类型,如AutoField、CharField、TextField等,以及它们的用途。同时,讨论了模型字段的参数,如default、choices、max_length等,并展示了如何设置外键关联,包括级联删除和置空策略。文中还给出了Department和UserInfo模型的例子
————————————————

原文链接:https://blog.csdn.net/pcxiaoke/article/details/131628059

 

ORM关联数据的逻辑是:

 

 

Django 中常见的模型字段类型及其含义:

AutoField:一个自动递增的整型字段,添加记录时它会自动增长。
BigAutoField:一个自动递增的 biginteger字段,添加记录时它会自动增长。
CharField:用于存储字符类型的数据,如姓名、地址、电话等。
TextField:用于存储长文本类型的数据,如文章、评论等。
IntegerField:用于存储整数类型的数据,如年龄、数量等。
BigIntegerField:用于存储 biginteger类型的数据,比 IntegerField 更大。
SmallIntegerField:用于存储 smallinteger类型的数据,比 IntegerField 更小。
FloatField:用于存储浮点数类型的数据,如温度、海拔等。
DecimalField:用于存储十进制类型的数据,如金额、分数等。它可以设置最大位数和小数点后的位数,支持四舍五入等设置。
BooleanField:用于存储布尔类型的数据,如是否、开关状态等。它只能接受 True 或 False 两个值。
DateField:用于存储日期类型的数据,如出生日期、有效期等。
DateTimeField:用于存储日期和时间类型的数据,如创建时间、修改时间等。它可以设置日期和时间的格式、时区等。
TimeField:用于存储时间类型的数据,如开始时间、结束时间等。
FilePathField:用于存储文件路径类型的数据,它可以选择指定的文件路径。
CharField:用于存储文件路径类型的数据,它可以选择指定的文件路径。
EmailField:用于存储电子邮件地址类型的数据。
SluginField:用于存储滑块类型的数据,它可以在一个范围内滑动并进行选择。
常用的模型字段参数及其含义:

default:用于指定该字段的默认值。
如果一个字段没有指定 default 参数,则在创建新的模型实例时,该字段将默认为 None 或该字段类型的空值。
如果一个字段的 default 参数是一个值,则在创建新的模型实例时,该字段将默认为该值。
如果一个字段的 default 参数是一个函数,则在创建新的模型实例时,该字段将调用该函数来获取默认值。
choices:用于限制该字段的可选值。
如果一个字段的 choices 参数是一个元组或列表,则该字段的可选值必须是其中之一。
如果一个字段的 choices 参数是一个函数,则该字段在表单中显示时将调用该函数来获取可选值。
max_length:用于限制该字段的最大长度。
如果一个字段是字符类型(如 CharField 或 TextField),则 max_length 参数指定该字段的最大长度。
如果一个字段是数字类型(如 IntegerField 或 FloatField),则 max_length 参数无效。
min_length:用于限制该字段的最小长度。
如果一个字段是字符类型(如 CharField 或 TextField),则 min_length 参数指定该字段的最小长度。
如果一个字段是数字类型(如 IntegerField 或 FloatField),则 min_length 参数无效。
validators:用于指定对该字段进行验证的验证器列表。
如果一个字段的 validators 参数是一个验证器函数列表,则这些验证器函数将在保存该字段的值之前对其进行验证。
如果一个字段的 validators 参数是一个字符串列表,则这些字符串将作为参数传递给一个内置的验证器函数(例如 django.core.validators.validate_email)。
default_validators:用于指定对该字段进行默认验证的验证器列表。
如果一个字段的 default_validators 参数是一个验证器函数列表,则这些验证器函数将在保存该字段的值之前对其进行默认验证。
help_text:用于指定该字段在表单中的帮助文本。
如果一个字段的 help_text 参数是一个字符串,则该字符串将被用作该字段在表单中的帮助文本,以提供额外的用户指导。
db_column:用于指定该字段在数据库表中的列名。
如果一个字段的 db_column 参数是一个字符串,则数据库表中的该列将使用该字符串作为列名。
db_tablespace:用于指定该字段在数据库表中的表空间名。
如果一个字段的 db_tablespace 参数是一个字符串,则数据库表中的该字段将存储在该表空间中。
unique:用于指定该字段是否是唯一的。
如果一个字段的 unique 参数为 True,则在数据库表中,该字段的值必须是唯一的。
如果一个字段的 unique 参数为 False(默认值),则在数据库表中,该字段的值可以重复出现。
null:用于指定该字段是否允许为空值。
如果一个字段的 null 参数为 True,则在数据库表中,该字段可以为空值 NULL。
如果一个字段的 null 参数为 False(默认值),则在数据库表中,该非空字段必须有一个非空的值。
blank:用于指定该字段是否允许为空字符串。
如果一个字段的 blank 参数为 True,则在表单中提交该非空
几种常用的方式:

#无约束

depart_id = models.BigIntegerField(verbose_name="部门ID")

1.有约束

#- to,与那张表关联

#- to_field,表中的那一列关联

2.django自动

#- 写的depart

生成数据列 depart_id

3.部门表被删除

3.1 级联删除(部门删除,他的关联部门下的人都会被删除)

depart = models.ForeignKey(to="Department",to_field="id",on_delete=models.CASCADE)

3.2 置空(部门删除,他的关联部门下的人不会被删除,部门ID显示null)

depart=models.ForeignKey(to="Department",to_field="id",null=True,blank=True,on_delete=models.SET_NULL)

再来一些参考:

class Department(models.Model):

"""创建部门表"""

models.CharField(verbose_name='标题',max_length=32)

class UserInfo(models.Model):

"""创建员工表"""

name = models.CharField(verbose_name="姓名",max_length=16)

password=models.CharField(verbose_name="密码",max_length=32)

age = models.IntegerField(verbose_name="年龄")

account = models.DecimalField(verbose_name="账户余额",max_digits=18,decimal_places=2,default=0)

create_time = models.DateTimeField(verbose_name="创建时间")

depart = models.ForeignKey(to="Department",to_field="id",on_delete=models.CASCADE)

gender_choices=(

(1,"")

(2,"")

)

gender = models.SmallAutoField(verbose_name="性别",choices=gender_choices)

 

————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/pcxiaoke/article/details/131628059

posted @ 2025-01-22 11:13  0刘家三少0  阅读(66)  评论(0)    收藏  举报