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)