八、多表模型操作

环境:

根据关系创建表图片.png

首先建立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

图片.png

在项目中创建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表中添加几条数据

图片.png

一对多新增数据(接上面的继续写)

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表

图片.png

# 一对多修改数据

test.py

方式一:

book=Book.objects.get(pk=1)
book.publish_id=2
book.save()

app01_book表:

图片.png

方式二:

book=Book.objects.filter(pk=1).update(publish_id=1)

app01_book表:

图片.png

多对多新增数据

test.py









猜你喜欢

转载自blog.51cto.com/silencezone/2338486