Django模型

设计系统表定义

  • Django 提供完善的模型(model)层主要用来创建和存取数据,不需要我们直接对数据库操作。
  • 每个模型是一个 Python 类,继承 django.db.models.model 类。
  • 该模型的每个属性表示一个数据库表字段。

表的创建

  • 打开.../sign/models.py 文件,完成表的创建。

    from django,db import models
    from django.db.models.deletion import CASCDE
    class Event(model.Mpdel):
      name=models.CharField(max_lengh=100)#发布会标题
          limit=modles.IntegerField()#参加人数
          status=models.BooleanField()#状态
          address=models.CharField(max_lengh=200)"#发布会地址
          start_time=models.DatetimeField("event time")#发布会时间
          create_time=models.DatetimeField(auto_now='ture')#创建时间自动获取当前时间
          def __str__(self):
                 return self.name

    class Guest(model.Model):

    event = modles.ForeignKey(Event,on_delete=models.CASCDE) #创建外键,关联两个表,注意这是两个参数

    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
    首先,发布会表和嘉宾表中默认都会生成自增 id,而我们在创建模型时不需要声明该字段。
    其次,发布会表中增加了 status 字段用于表示发布会的状态是否开启,用于控制该发布会是否可用。 
    再次,嘉宾表中通过 event_id 关联发布会表,一条嘉宾信息一定所属于某一场发布会。
    最后,对于一场发布会来说,一般会选择手机号作为一位嘉宾的验证信息,所以,对于一场发布会来说, 
    手机号必须是唯一。除了嘉宾 id 外,这里通过发布会 id +手机号来做为联合主键。
    __str__()方法告诉 Python 如何将对象以 str 的方式显示出来。所以,为每个模型类添加了__str__()方法。         
  • 然后执行python manage.py makemigrations sign进行数据库迁移。
  • 在执行python3 manage.py migrate。 需指定python版本要不会报错

admin后台管理

  • 创建的嘉宾表和发布会可以通过admin后台管理

    打开.../sign/admin.py 文件
    from django.contrib import admin
    from sign.model import Event,Guest #载入发布会和事件表
    class Eventadmin(admin.ModelAdmin):   #创建事件表格
        list_display = ['name', 'status', 'start_time','id']。#添加字段(这些字段名称必须是模型中的 Event()类定义的。)

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

    admin.site.register(Event,EventAdmin)
    admin.site.register(Guest,GuestAdmin).  #用admin.site.register()函数注册模块,关联上函数,需要传两个参数,一个名称在前端显示,一个关联


  • admin后台定制
    生成搜索栏和过滤器,修改admin.py
    search_fields=['name']
    search_fields 用于创建表字段的搜索器,可以设置搜索关键字匹配多个表字段
    list_filter=["status"]
    list_filter 用于创建字段过滤器。


     
     
posted on 2021-10-21 17:31  zfj822  阅读(24)  评论(0编辑  收藏  举报