Django中models的编写

models的编写

  • models中的每个class都称之为模型类(Model) 或 实体类(Entry)
  • models中的每个实体类,必须继承自models.Model
1、通过ORM创建数据表
  • 1、在models 文件中定义一个类,如下
from django.db import models

# Create your models here.
class Publisher(models.Model):
    name = models.CharField(max_length=20)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=20)
    country = models.CharField(max_length=20)
    website = models.URLField()
  • 2、在命令提示符中输入python manage.py makemigrations,此时在对应应用的migrations文件夹中出现一个0001_initial文件
# Generated by Django 2.1.8 on 2019-05-07 08:06

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Publisher',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=20)),
                ('address', models.CharField(max_length=50)),
                ('city', models.CharField(max_length=20)),
                ('country', models.CharField(max_length=20)),
                ('website', models.URLField()),
            ],
        ),
    ]

  • 3、再在命令提示符中执行python manage.py migrate,此时数据库自动创建一个表
    在这里插入图片描述
    注意:Django中的 CharField 数据字段对应SQL中的 varchar 类型的数据
2、Django提供的数据字段以及字段选项
  • 1、常用数据字段(Field Types)
    • BooleanField() 布尔类型
    • CharField() 字符串类型
    • DateField() 日期类型
    • DateTimeField() 日期时间类型
    • FloatField() 浮点数类型
    • FileField() 字符串类型-文件地址
    • EmailField() 字符串类型
    • IntegerField() 整数类型
    • ImageField() 字符串类型- 图片地址
    • URLField() 字符串类型-网址
    • TextField() 字符串类型
    • DecimalField() 浮点数类型
  • 2、常用数据选项(Field Options)
    • null :是否为空name = CharField(max_length=30, null=True),允许为空
    • default:设置默认值name = CharField(max_length=30, default=“保密”)设置默认值为保密
class Author(models.Model):
    name = models.CharField(max_length=20)  # varchar(20)
    age = models.IntegerField()   # int
    email = models.EmailField(null=True)  # varchar(254)允许为空


class Book(models.Model):
    title = models.CharField(max_length=30)    # varchar(30)
    publication_date = models.DateField(default=datetime.datetime.now())  # date 

参考文档(字段类型与字段选项)

3、数据版本的切换
  • python manage.py migrate 应用名称 版本号
  • 例如:python manage.py migrate music 0002,重新执行0002的日志文件
    在这里插入图片描述
4、数据的导出
  • mysqldump -u root -p 数据库名 > 文件名.sqi(导出所有的表结构和数据)
  • mysqldump -u root -p -d 数据库名 > 文件名.sql(导出表结构,不导数据)
5、数据的导入
  • mysql -u root -p 数据名 < 文件名.sql (数据库名必须先存在)
6、通过数据库自动导出models文件
发布了75 篇原创文章 · 获赞 87 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43883022/article/details/89919367