Django模型-admin后台管理数据

github地址:https://github.com/Oneperson1128/DjangoDemo  

1、设计数据库表

在loginDemo2文件夹代码基础上,修改models.py文件

from django.db import models

# Create your models here.

'''
默认生成自增id,不需要声明该字段
'''
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)  #创建时间,自动获取当前时间

    '''
    python 如何将对象以str的方式显示出来
    '''
    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、数据库迁移

python3 manage.py makemigrations loginApp

python3 manage.py migrate

3、admin后台管理

修改admin.py文件

from django.contrib import admin

# Register your models here.
from loginApp.models import Event, Guest   #用pycharm打开时,open到manage.py的文件夹,不然导入后会报错找不到模块

admin.site.register(Event)
admin.site.register(Guest)

4、admin后台显示更多的字段

from django.contrib import admin

# Register your models here.
from loginApp.models import Event, Guest

class EventAdmin(admin.ModelAdmin):
    list_display = ['id','name','status','start_time']

class GUestAdmin(admin.ModelAdmin):
    list_display = ['id','realname','phone','email','sign','create_time','event']

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

5、增加搜索和过滤栏

from django.contrib import admin

# Register your models here.
from loginApp.models import Event, Guest

class EventAdmin(admin.ModelAdmin):
    list_display = ['id','name','status','start_time']
    search_fields = ['name']   #搜索框根据name匹配
    list_filter = ['status']   #过滤框根据status过滤

class GUestAdmin(admin.ModelAdmin):
    list_display = ['id','realname','phone','email','sign','create_time','event']
    search_fields = ['realname','phone']  #搜索框根据realname匹配或者phone匹配
    list_filter = ['sign']   #过滤框根据sign过滤

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

说明:Django数据库字段类型及说明

AutoField 用于存放 integer 类型的数字。
BooleanField 用于存放布尔类型的数据(Ture 或 False)
CharField 用于存放字符型的数据,需要指定长度 max_length。
CommaSeparatedIntegerField 用于存放用逗号隔开的 integer 类型的数据。
DateField 日期型,必须是“YYYY-MM-DD”格式
DateTimeField 日期时间型,必须是"YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] "格式。
DecimalField 小数型,用于存放小数的数字。
EmailField 电子邮件类型
FilePathField 文件路径类类型,FilePathFields must have either 'allow_files' or 'allow_folders' set to True.
FloatField 浮点型。用于存放浮点型数据。
IntegerField 用于存放 integer 类型的数字。
BigIntegerField 用于存放大 integer 类型的数字,最大数支持:9223372036854775807
GenericIPAddressField 存放 IP 地址的类型,IPv4 和 IPv6 地址,字符串格式。
NullBooleanField vlaue must be either None, True or False.
PositiveIntegerField Positive integer
PositiveSmallIntegerField Positive small integer
SlugField 需要定义 max_length 值。
SmallIntegerField Small integer
TextField 用于存放文本类型的数据。
TimeField 时间类型。"HH:MM[:ss[.uuuuuu]]" 格式
URLField 用于存放 URL 地址
BinaryField Raw binary data

github源代码:https://github.com/Oneperson1128/DjangoDemo.git    本文章参考loginDemo3文件夹

posted @ 2021-02-15 17:42  Yi个人  阅读(97)  评论(0编辑  收藏  举报