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用于创建字段过滤器

浙公网安备 33010602011771号