前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第一季 | 数据模型知多少?不如实践试一试

第一季 | 数据模型知多少?不如实践试一试

作者头像
小团子
发布2020-04-08 10:36:50
4990
发布2020-04-08 10:36:50
举报
文章被收录于专栏:数据云团

Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

改动django目录结构,试过么?

太容易都报错了

在开始理解和创建数据模型前,先来改动下已经创建的 django 目录结构,这是未修改前的目录:

分为项目的 manage.py、templates 模板、settings 配置、应用

修改后的目录:

分为项目的 manage.py、templates 模板、config 配置、apps 应用、datasource 存放 sqlite 数据库

在修改 settings 目录名时,需要注意这几个地方的修改:

1. manage.py 文件

2. settings.py 文件

3. wsgi.py 文件

4. 新增的 apps 应用管理

再重新启动 django 项目

再来看下第一季都有哪些可以回顾和用得上的小技能

在用 Pycharm 创建 django 项目的同时,也创建了一个 users 应用,可以在应用的 models.py 文件中创建用户模型。

代码语言:javascript
复制
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.utils.encoding import python_2_unicode_compatible
# Create your models here.


@python_2_unicode_compatible
class UserProfile(AbstractUser):
    """
    用户
    """
    name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名")
    birthday = models.DateField(null=True, blank=True, verbose_name="出生年月")
    gender = models.CharField(max_length=6, choices=(("male", u"男"), ("female", "女")), default="female", verbose_name="性别")
    # 电话 null=True blank=True
    mobile = models.CharField(max_length=11, verbose_name="电话")
    email = models.CharField(max_length=100, null=True, blank=True, verbose_name="邮箱")

    class Meta:
        verbose_name = "用户"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.username

AbstractBaseUser中只含有3个field: password, last_login和is_active.

不要忘了在 settings.py 中设置:

代码语言:javascript
复制
AUTH_USER_MODEL = "users.UserProfile"

Django 支持三种继承方式:

1. 抽象基类

2. 多表继承

3. 代理模型

Django 抽象基类和 Python 的抽象基类不同

抽象基类:只有继承的子数据模型才会创建数据表,能在抽象父类中定义共同项来减少重复输入,同时没有多表继承的额外数据表和 join 操作的开销,父类不能单独使用。

多表继承:父类和子类都会创建对应的数据表。两者之间隐含有一个 OneToOneField 关联,因每个数据模型都有表,故可对父子各自进行查询操作。同时可以通过 parent.child 从父对象直接访问子对象,对子表的查询都会有一个与其所有父表的 join 操作。非常不推荐使用多表继承!

代理模型:只为原始数据模型创建数据表,可以为原始数据模型创建一个别名,并添加不同的 Python 行为,无法修改数据模型项。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档