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


       
       
  • 相关阅读:
    MyCat 数据库读写分离
    python 网络编程-05 socketserver
    python 网络编程-04 文件的传输
    python 网络编程-03 粘包问题及处理
    常用模块-01getopt
    js获取自动获取本电脑IP
    js变态需求
    js正则不能输入中文和英文
    禁止输入中文
    手机号3-4-5
  • 原文地址:https://www.cnblogs.com/zhifeiji822/p/15434360.html
Copyright © 2020-2023  润新知