支持HW团队,就支付宝领取下面的红包吧! (打开支付宝就能领取!er1OEj73Uj), (打开支付宝收索“516503473”), 你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

Login or Sign up | Validate
| Search

博主:初学MPEG

初学MPEG 本博客-采用Python的web框架Django与Mysql数据库,致力于对Python、Django的了解 与研究
Django技术QQ群:XXXXXXX
Python技术QQ群:XXXXXXX

Category

Keywords

本站最新博文

友情链接  

【转】

类别:其他 状态:游客可见,可回,会员可关联(没审核) 阅读:295 评论:0 时间:March 31, 2019, 8:35 a.m.
关键字:
来源:https://www.cnblogs.com/lingzeng86/p/7219683.html
数据库表的设计
设计系统表
Django提供完善的模型(model)层主要用来创建和存取数据,不需要我们直接对数据库操作。
Django模型基础知识:
每个模型是一个Python类,继承django.db.models.model类。
该模型的每个属性表示一个数据库表字段。
所有这一切,已经给你一个自动生成的数据库访问的API。
1、打开.../sign/models.py文件,完成表的创建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from django.db import models
 
 
# Create your models here.
"""
发布会表和嘉宾表中默认都会生成自增id,而我们在创建模型时不需要声明该字段
发布会表中增加了status字段用于表示发布会的状态是否开启,用于控制该发布会是否可用
嘉宾表中通过event_id关联发布会表,一条嘉宾信息一定所属于某一场发布会
对于一场发布会来说,一般会选择手机号作为一位嘉宾的验证信息,所以,对于一场发布会来说,
手机号必须是唯一。除了嘉宾id外,这里通过发布会id+手机号来做为联合主键
"""
 
 
# 发布会表
class Event(models.Model):
    name = models.CharField(max_length=100)  # 发布会标题
    limit = models.ImageField()  # 参加人数
    status = models.BooleanField()  # 状态
    address = models.CharField(max_length=200)  # 地址
    start_time = models.DateTimeField('events time')  # 发布会时间
    create_time = models.DateTimeField(auto_now=True)  # 创建时间(自动获取当前时间)
 
    # __str__()方法告诉Python如何将对象以str的方式显示出来。所以,为每个模型类添加了__str__()方法
    # 如果是Python2.x的话,这里需要使用__unicode__()
    def __str__(self):
        return self.name
 
 
# 嘉宾表
class Guest(models.Model):
    event = models.ForeignKey(Event)  # 关联发布会id
    real_name = 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.real_name
Django Models的数据类型,如下表:
(依据C:\Python35\Lib\site-packages\django\db\models\fields\__init__.py文件)
AutoField
 
IntegerField
BooleanField
true/false
 
CharField
maxlength,必填
 
TextField
 
 
CommaSeparatedIntegerField
maxlength,必填
逗号分隔
DateField
auto_now
可选,每次动作都会更新
auto_now _add
可选,一次产生
 
DateTimeField
auto_now
可选,每次动作都会更新
auto_now _add
可选,一次产生
 
EmailField
 
 
FileField
upload_to,可选
object.get_myfile_url
FilePathField
path
必填"/home/images"
match
可选,正则表达式,用于过滤文件名
recursive
可选,False,表示path的子目录是否包含在内
 
FloatField
max_digits
必填,数字长度
decimal_places
必填,即有效位数
 
 
ImageField
upload_to
 
height_field
可选
width_field
可选
需要验证,即Python Imaging Library
IntegerField
 
 
IPAddressField
 
 
NullBooleanField
 
相当于设置了null=True的BooleanField
PhoneNumberField
 
美国电话号码格式
PositiveIntegerField
 
正整数字段
PositiveSmallIntegerField
 
小的正整数字段,取决于数据库特性
SlugField
maxlength(50)
可选
db_index
默认为True
prepopulate_from
可选,用于指示在admin表单中的可选值
短标签,仅包含字母、数字、下划线、连字符,一般用于url
SmallIntegerField
 
小整数字段,依赖于数据库特性
TimeField
auto_now
可选,每次动作都会更新
auto_now _add
可选,一次产生
 
URLField
verify_exists(True),检查URL可用性
 
USStateField
 
两个字母表示的美国州名字段
XMLField
schema_path,必选
 
 
 2、数据库迁移
python manage.py makemigrations sign
admin后台管理
使用admin后台管理发布会和嘉宾表,首先需配置,打开.../sign/admin.py文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from django.contrib import admin
 
# Register your models here.
from sign.models import Event, Guest
 
 
# Register your models here.
class EventAdmin(admin.ModelAdmin):
    # list_display,它是一个字段名称的数组,用于定义要在列表中显示哪些字段。
    # 当然,这些字段名称必须是模型中的Event()类定义的
    list_display = ['name''status''start_time''id']
    # 生成搜索栏和过滤器
    search_fields = ['name']  # 搜索栏
    list_filter = ['status']  # 过滤栏
 
 
class GuestAdmin(admin.ModelAdmin):
    list_display = ['real_name''phone''email''sign''create_time''event']
    # 生成搜索栏和过滤器
    search_fields = ['realname','phone']  # 搜索栏
    list_filter = ['sign']  # 过滤栏
 
 
admin.site.register(Event, EventAdmin)
admin.site.register(Guest, GuestAdmin)
最终的效果图:
 配置 MySQL 
前面用的数据库是 Python 自带的 SQLite3, 这种数据库并不适用大型的项目。 除 SQLite3 之外, Django还支持mysql,本节以 MySQL 为例, 介绍 MySQL 的安装, 以及在 Django 中的配置。 
1、安装mysql
下载msi文件(如:mysql-installer-community-5.7.19.0.msi),具体安装方法百度
用户名/密码:root/root、zenglm/zenglm
端口号:3307(由于默认的3306被占用)
2、创建 guest 库 
打开
创建库:CREATE DATABASE guest CHARACTER SET utf8; 
3、安装 PyMySQL 
python2.x可以使用MySQL-python 连接mysql数据库。而python3需要使用PyMySQL 驱动 。
安装执行命令:python3 -m pip install PyMySQL 
操作:

Please Login (or Sign Up) to leave a comment