Django二,模型

本文介绍了DjangoORM的基本概念,包括ORM原理、如何通过模型类操作数据库,以及数据库配置步骤,如创建数据库、配置MySQL连接和安装依赖。还详细讲解了模型类的字段定义和常见字段类型,以及表间的关系设计。
摘要由CSDN通过智能技术生成

1.ORM介绍

o(bojects):类和对象

R(Relation):关系,关系数据库中的表格

M(Mapping):映射

Django ORM框架和功能:

a.建立模型和表之间的对应关系,允许我们通过面向对象的方式来操作数据库

b.根据设计的模型类生成数据库中的表格

c.通过方便的配置就可以进行数据库的切换

2.数据库的配置

1.创建数据库:

django框架,只能产生数据表,不会自动帮助我们生成mysql数据库,所以我们需要自己去创建

2.django配置使用mysql数据库:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

mysql:中查看数据库有几个的指令: show databases;

进入mysql数据库的指令mysql -uroot -p

退出数据 quit或\q

创建新的数据库:create database web02 charset=utf8;

# 数据库的配置文件
DATABASES = {
    'default': {
        # django的数据库引擎,更改成mysql
        'ENGINE': 'django.db.backends.mysql',
        # 数据库中的库名
        'NAME': 'webo2',
        # 账号
        "USER": "root",
        # 密码
        "PASSWORD": "123456",
        # 本机
        "HOST": "localhost",
        # 端口
        "PORT": 3306
    }
}

3.安装依赖

django框架使用mysql:需要安装依赖mysqlclient

pip install mysqlclient

3.模型类字

django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列之后django不会在创建自动增长的主键列

默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key

1.字段的命名限制

1)不能是python的关键字

2)不允许使用连续的下划线,django 的查询方式有连续的下划线的语法

3)定义字段时需要指定字段的类型,通过字段的参数指定选项,语法如下:

命名属性=model.字段类型(选项)

2.常用的字段类型

使用时需要引入django.db.models包,字段类型如下:

CharField 字符串

id字段是不用定义是会自动生成:

from django.db import models

# Create your models here.
"""
# 新闻类型表:时尚杂志,国际新闻,体育新闻,时事政治。。。。。
    news_type
        id:主键
        name:类型名称 字符串

# 新闻信息表:保存文件的纤细信息
    newsinfo表
        id:主键
        title:标题  字符串
        content:内容  text
        read:阅读数据    int
        comment:品论数量    int
数据表之间的关系:
    一对一:
    一对多:
    多对多:
"""


class NewsType(models.Model):
    """定义新闻类型的模型类"""
    # id 会自动生成
    name = models.CharField(max_length=20, varbose_name='新闻类型123', help_text='名称123')


class NewsYnfo(models.Model):
    """新闻信息的模型类"""
    title = models.CharField(max_length=100, varbose_name='标题123', help_text='标题123')
    content = models.TextField(max_length=100, varbose_name='新闻内容123', help_text='新闻内容123')
    read = models.IntegerField(verbose_name='阅读量123', help_text='阅读量')
    comment = models.IntegerField(verbose_name='评论数量123', help_text='评论数量')
    # 维护多对多的关系
    type = models.ManyToManyField('NewsType', varbose_name='新闻类型ABC')

 

    def __str__(self):
        return self.name

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

终会为一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值