django入门 08 [用户管理实战] 01 设计数据库

Posted navii for navigation

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django入门 08 [用户管理实战] 01 设计数据库相关的知识,希望对你有一定的参考价值。

【django入门】 08 [用户管理实战] 01 设计数据库

Pycharm小技巧

Ctrl + Alt + R,打开manage.py命令行,更快地执行startapp、migrate等命令


设计数据库(部门、用户)

  1. 添加表的描述,以""" """包裹
  2. 添加字段的描述,verbose_name = ""
  3. CharField 必须指定max_length
  4. id = models.BigAutoField(verbose_name="ID", primary_key=True) 这一句django自动在后台写好,不需要写
    因为apps.py里有: default_auto_field = \'django.db.models.BigAutoField\'
    当然,也因此允许编码人员做自定义修改
  5. 注意DecimalField规定数位数、小数位数的语句
  6. ForeignKey:有约束地关联到部门ID(值必须为Department表中实际值)
  7. ForeignKey:如果只写“depart”,生成数据库列时,django会自动添加“_id”
  8. ForeignKey:如果写了“depart_id”,生成数据库列时,django仍然会自动添加“_id”,造成有两个“_id”
  9. CASCADE:部门表删除数据行时,同时删除相关的员工表里的数据行(级联删除)
  10. SET_NULL:部门表删除数据行时,同时清空相关的员工表里的该字段(置空)
  11. 以元祖规定的约束——节省表的数量,同时节省本表空间

class Department(models.Model):
    """ 部门表 """
    title = models.CharField(verbose_name=\'标题\', max_length=32)


class UserInfo(models.Model):
    """ 员工表 """
    name = models.CharField(verbose_name=\'标题\', max_length=32)
    password = models.CharField(verbose_name=\'密码\', max_length=64)
    age = models.IntegerField(verbose_name=\'年龄\')
    account = models.DecimalField(verbose_name=\'工资\',
                                   max_digits=10,
                                   decimal_places=2, default=0)
    create_time = models.TimeField(verbose_name=\'入职时间\')

    depart_id = models.ForeignKey(to=\'Department\', to_field=\'id\',
                                  on_delete=models.CASCADE)

    
    depart_id = models.ForeignKey(to=\'Department\', to_field=\'id\',
                                  blank=True,null=True,
                                  on_delete=models.SET_NULL)

    gender_choices=(
        (1, "男"),
        (2, "女"),
    )
    gender =models.SmallIntegerField(verbose_name="性别",choices=gender_choices)
  • 使用ForeignKey关联部门表ID
    好处:节省服务器空间(大部分公司这么做,关系型数据库)

  • 不使用ForeignKey,直接存值
    好处:减少查询返回时间(互联网巨头才这么做,由于表被特别频繁地访问)


设计bootstrap页面

来源:BV1NL41157 武沛齐《2022 B站最详细django3教程(django从入门到实践)》P19-P22

以上是关于django入门 08 [用户管理实战] 01 设计数据库的主要内容,如果未能解决你的问题,请参考以下文章

Django实战1-权限管理功能实现-01:搭建开发环境

Django实战1-权限管理功能实现-09:组织架构关联用户

Django快速开发实战初识Django

Django快速开发实战初识Django

Django入门进阶与项目实战

Django实战1-权限管理功能实现-08:组织架构修改和删除