您现在的位置:首页 >> 前端 >> 内容

Django模型讲解之设计系统表及admin后台管理

时间:2018/3/30 14:28:03 点击:

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

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.当模型创建好之后,执行数据迁移

Django模型讲解之设计系统表及admin后台管理

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后台:https://127.0.0.1:8000/admin/(admin/admin123456)进行操作一下看看。下图是添加Events之后的显示

Django模型讲解之设计系统表及admin后台管理

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.再次刷新页面,可以发现详细信息已经能够显示出来了

Django模型讲解之设计系统表及admin后台管理

注:快速地生成搜索栏和过滤器。重新打开../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)

Django模型讲解之设计系统表及admin后台管理

search_fields用于创建表字段的搜索器,可以设置搜索关键字匹配多个表字段。

list_filter用于创建字段过滤器。

Tags:DJ JA AN NG 
作者:网络 来源:0的博客