Django模型---设计系统表及admin后台管理(八)

Django提供了完善的模型(model)层来创建和存取数据,它包含你所存储数据的必要字段和行为。通常,每个模型对应数据库唯一的一张表。故,模型避免我们直接对数据库操作。

Django模型基础知识:

  • 每个模型是一个model类,继承自Django.db.models.Model类。
  • 该模型的每个属性表示一个数据库表字段。
  • 所有这一切,已经给了你一个自动生成的数据库访问的API。

1.通过模型完成表的创建,打开../FirstApp/models.py文件,编写如下代码

from django.db import models

# Create your models here.
# 发布会表
class Event(models.Model):
    name = models.CharField(max_length=100)# 发布会标题
    limit = models.IntegerField()# 参加人数
    status = models.BooleanField()# 状态
    address = models.CharField(max_length=200)# 地址
    start_time = models.DateTimeField('events time')# 发布会时间
    create_time = models.DateTimeField(auto_now=True)# 创建时间(自动获取当前时间)

    def __str__(self):
        return self.name



# 嘉宾表
class Guest(models.Model):
    event = models.ForeignKey(Event)# 关联发布会ID
    realname = models.CharField(max_length=64)# 姓名
    phone = models.CharField(max_length=16)# 手机号
    email = models.EmailField() # 邮箱
    sign = models.BooleanField() # 签到状态
    create_time = models.DateTimeField(auto_now=True) # 创建时间(自动获取当前时间)

    class Meta:
        unique_together = ("event", "phone")

    def __str__(self):
        return self.realname

关于模型字段常用类型,参考官方文档,点此链接
2.当模型创建好之后,执行数据迁移

  • makemigrations:基于当前的model创建新的迁移策略文件。
  • migrate:用于执行迁移动作,具有syncdb的功能。
  • sqlmigrate:显示迁移的sql语句,具有sqlall的功能。

3.admin后台管理
之前的文章讲过,通过admin后台管理用户/用户组非常方便。创建的发布会和嘉宾表同样可以通过admin后台管理。
打开../FirstApp/admin.py文件,编写如下代码:

from django.contrib import admin
from FirstApp.models import Event, Guest

# Register your models here.
admin.site.register(Event)
admin.site.register(Guest)

这些代码通知admin管理工具为这些模块逐一提供界面。你可以通过登陆admin后台:http://127.0.0.1:8000/admin/(admin/admin123456)进行操作一下看看。下图是添加Events之后的显示
4.由上图可以发现,显示的字段并不全,继续修改../FirstApp/admin.py文件,实现更多字段的显示。

from django.contrib import admin
from FirstApp.models import Event, Guest

# Register your models here.
class EventAdmin(admin.ModelAdmin):
    list_display=['id','name', 'status', 'address', 'start_time']

class GuestAdmin(admin.ModelAdmino):
    list_display=['realname','phone', 'email', 'sign', 'create_time', 'event']      

admin.site.register(Event, EventAdmin)
admin.site.register(Guest, GuestAdmin)

Django提供了大量选项让你针对特别的模块自定义管理工具。这些选项都在ModelAdmin类中,创建EventAdmin类ModelAdmin。这里只自定义了一项:list_display,它是一个字段名称的数组,用于定义要在列表中显示哪些字段。而且,这些字段的名称必须是模型中的Event()类所定义的。
修改admin.site.register()方法,添加EventAdmin类。可以理解为:用EventAdmin选项注册Event模块。
5.再次刷新页面,可以发现详细信息已经能够显示出来了
这里写图片描述

注:快速地生成搜索栏和过滤器。重新打开../FirstApp/admin.py文件,做出如下修改。

from django.contrib import admin
from FirstApp.models import Event, Guest

# Register your models here.
class EventAdmin(admin.ModelAdmin):
    list_display=['id','name', 'status', 'address', 'start_time']
    search_fields = ['name'] # 搜索栏
    list_filter = ['status'] # 过滤器

class GuestAdmin(admin.ModelAdmin):
    list_display=['realname','phone', 'email', 'sign', 'create_time', 'event']
    search_fields = ['realname', 'phone'] # 搜索栏
    list_filter = ['sign'] # 过滤器


admin.site.register(Event, EventAdmin)
admin.site.register(Guest, GuestAdmin)

这里写图片描述
search_fields用于创建表字段的搜索器,可以设置搜索关键字匹配多个表字段。
list_filter用于创建字段过滤器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值