模型(model)系统 --常用字段和字段参数

本文详细介绍了Django的ORM模型系统,包括常用字段如EmailField,字段参数,时间字段,以及ForeignKey、OneToOneField和ManyToManyField的关系字段。重点讨论了一对多关联、多对多关系的实现和操作,同时提到了数据库的变更日志管理和字段的动态添加。文章还探讨了Django中对象的增、删、改操作及其效率,并涉及聚合和分组的概念。
摘要由CSDN通过智能技术生成

官网对Models描述

ORM

  • ORM简介
    Object Relation Mapping
    django中使用Mysql时
    对象映射关系
    把数据库中的数据通过Django中的模型系统,可以转换为python中可操作的类的对象。所以叫映射关系。
    在这里插入图片描述

  • ORM项目使用MySql数据库
    setting.py中设置
    在这里插入图片描述
    与setting同级的__init__.py中设置
    在这里插入图片描述

from django.db import models

# Create your models here.

class Publisher(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=20)


# 设置外键,一对多
class Book(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=20)
    publisher = models.ForeignKey(to='Publisher')


# 多对多,新建一个联合表
class Author(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=20)
    book = models.ManyToManyField(to='Book')

'''
相当于:
class Author2Book(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.ForeignKey(to='Author')
    book = models.ForeignKey(to='Book')
'''

to='表名‘在本文件中反射此文件的模型,如果要关联别的app中的model。直接导入表后,to=表名
在models中新建外键,一对多,多对多的类,也就是表
在这里插入图片描述
在这里插入图片描述

在终端运行更新日志和把python语言通过django框架翻译成mysql看得懂的语言,新建表

D:\学习资料\Daily Code and experience\day59\day59>python manage.py makemigrations
Migrations for 'app01':
  app01\migrations\0001_initial.py
    - Create model Author
    - Create model Book
    - Create model Publisher
    - Add field publisher to book
    - Add field book to author

D:\学习资料\Daily Code and experience\day59\day59>python manage.py migrate;
Unknown command: 'migrate;'
Type 'manage.py help' for usage.

D:\学习资料\Daily Code and experience\day59\day59>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, app01, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying app01.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

数据库查询结果

mysql> use day59;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值