django 学习(九)—— 发布会签到系统设计发布会表和嘉宾表
Django模型基础知识:
- 每个模型是一个Python类,继承django.db.models.Model类
- 该模型的每个属性表示一个数据库字段
- 所有这一切,都已经给了你一个自动生成的数据库访问的api
打开.../sign/models.py文件,通过模型完成表的创建:
首先,发布会表和嘉宾表中默认都会生成自增id,但在创建模型类时不需要声明该字段。
其次,发布会表中增加status字段用于表示该发布会的状态是否开启,从而控制发布会是否可用。
再次,嘉宾表中通过event字段(表中字段名为event_id)关联发布会id,一条嘉宾信息一定属于某一场发布会。ForeignKey()用来创建外键。
最后,在嘉宾表中,除了嘉宾id为主键外,这里通过发布会id+手机号来作为联合主键。
Meta是Django模型类的一个内部类,它用于定义一些Django模型类的行为特性。unique_together用于设置两个字段为联合主键。
__str__()方法告诉Python如何将对象以str的方式显示出来。
django模型字段常用类型:
当模型创建好以后,执行数据库迁移。
解决方法:定义外键时加上on_delete=models.CASCADE,即:
重新迁移:
通过Admin后台管理用户/用户组
登录后台查看:
点击Event后面的加号,新增一条发布会信息
默认只有发布会名称,这与创建model时设置的__str__()方法有关,默认返回self.name,即发布会名称。如何才能让表显示更多的字段呢?
继续修改.../sign/admin.py文件
Django提供了大量选项让你针对特别的模块自定义管理工具。这些选项都在ModelAdmin类中,创建EventAdmin类ModelAdmin。这里只自定义了一项:list_display,它是一个字段名称的数组,用于定义要在列表中显示哪些字段。当然,这些字段名称必须是模型中的Event()类所定义的。
修改admin.site.register()方法,添加EventAdmin类。可以理解为:用EventAdmin选项注册Event模块。
生成搜索栏和过滤器
重新打开.../sign/admin.py文件
search_fields用于创建字段的搜索器,可以设置搜索关键字匹配多个表字段
list_filter用于创建字段过滤器