环境:
根据关系创建表
首先建立django项目,编辑models.py 文件
models.py
from django.db import models # Create your models here. class Publish(models.Model): # id 如果不写,会自动生成,名字叫做nid,并且自增 # 数据库不同,可能自动生成的id 名字也不太一样。 id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) addr = models.CharField(max_length=64) email = models.EmailField() class Author_details(models.Model): phone = models.CharField(max_length=16) sex = models.IntegerField class Author(models.Model): name = models.CharField(max_length=32) addr = models.CharField(max_length=64) # 使用了 OneToOneField 与 ForeignKey,模型表的字段,后面会自动加_id # 一对一的关系:OneToOneField authordetail_id = models.OneToOneField(to='Author_details', to_field='id') class Book(models.Model): name=models.CharField(max_length=16) # 浮点型,共5位,小数部分是2位 price=models.DecimalField(max_digits=5,decimal_places=2) # to= 关联表 to_field= 关联表中的字段 ,一对多的关系使用 ForeignKey publish=models.ForeignKey(to=Publish,to_field='id') # ManyToManyField 会自动创建第三张表 多对多的关系 authors=models.ManyToManyField(to=Author)
迁移数据库
makemigrations
migrate
在项目中创建Py文件,可以运行在django环境中的代码
test.py
import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pro77_13.settings") import django django.setup() from app01.models import *
一、多表模型创建,一对多的增删改,与多对多增删改
在app01_publish表中添加几条数据
一对多新增数据(接上面的继续写)
test.py
# 添加一本北京出版社出版的书 # 第一种方式 # ret=Book.objects.create(name='红楼梦',price=53.4,publish_id=1) # print(ret.name) # 第二种方式,存对象Publish=出版社对象,存到数据库是一个id # pk:主键,是通过主键查找 publish=Publish.objects.filter(pk=2).first() ret=Book.objects.create(name='红楼梦',price=53.4,publish=publish) print(ret.name)
app01_book表
# 一对多修改数据
test.py
方式一:
book=Book.objects.get(pk=1) book.publish_id=2 book.save()
app01_book表:
方式二:
book=Book.objects.filter(pk=1).update(publish_id=1)
app01_book表:
多对多新增数据
test.py