Python web模版Django-16 模型之创建表

    为了实现新的业务功能,我们需要创建一些表,因此需要接触到Django的模型处理。在这一章中,学创建两张表。

step1: 打开sign下的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, on_delete=models.CASCADE)  # 关联发布会 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

step2: 创建数据库表,先后运行  "makemigrations sign" 和“migrate",相关的数据表将创建完毕。




step3: 用SQLiteStudio查看表,已经创建成功


补充1:在第17篇中,加入verbose_name后,在admin后台看看有没有什么变化?

class Guest(models.Model):
    event = models.ForeignKey(Event, on_delete=models.CASCADE)  # 关联发布会 id
    realname = models.CharField(max_length=64, verbose_name='嘉宾姓名')   # 嘉宾姓名
    phone = models.CharField(max_length=16, verbose_name='嘉宾手机号')      # 嘉宾手机号

补充2:连表结构

  • 一对多:models.ForeignKey(其他表)
  • 多对多:models.ManyToManyField(其他表)
  • 一对一:models.OneToOneField(其他表)

应用场景:

  • 一对多:当一张表中创建一行数据时,有一个单选的下拉框(可以被重复选择)
    例如:创建用户信息时候,需要选择一个用户类型【普通用户】【金牌用户】【铂金用户】等。
  • 多对多:在某表中创建一行数据是,有一个可以多选的下拉框
    例如:创建用户信息,需要为用户指定多个爱好
  • 一对一:在某表中创建一行数据时,有一个单选的下拉框(下拉框中的内容被用过一次就消失了
    例如:原有含10列数据的一张表保存相关信息,经过一段时间之后,10列无法满足需求,需要为原来的表再添加5列数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值