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

ORM关联数据的逻辑是:

django框架中使用ORM设计数据库的模型_第1张图片

 

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

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

常用的模型字段参数及其含义:

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

     

你可能感兴趣的:(Django,数据库,django,python,后端)