博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django之数据表增删改查
阅读量:4677 次
发布时间:2019-06-09

本文共 7564 字,大约阅读时间需要 25 分钟。

Django数据增删改查:

上课代码

from django.shortcuts import render,HttpResponse# Create your views here.from app01 import modelsdef addBook(request):    # 一对多的添加    # 方式1    #models.Book.objects.create(title="python",price=100,publishDate="2017-12-12",publish_id=1)//这是规定传值    # 方式2    # pubObj=models.Publish.objects.filter(name="人民出版社")[0]    # models.Book.objects.create(title="python2",price=120,publishDate="2017-10-12",publish=pubObj)  # 关联的出版社对象这个比较灵活    # 多对多的添加    #book_obj=models.Book.objects.create(title="红楼梦", price=100, publishDate="2017-12-12", publish_id=2)    # alex_obj=models.Author.objects.filter(name="alex")[0]    # egon_obj=models.Author.objects.filter(name="egon")[0]    # egon_obj=models.Author.objects.filter(name="yuan")[0]    # print("======",book_obj.authorlist) # []    #    # authorList=models.Author.objects.all()    #    #    # # 绑定多对多的关系    #    # #book_obj.authorlist.add(alex_obj,egon_obj)  # [alex_obj,egon_obj]#这个是添加可以列举的作者    # book_obj.authorlist.add(*authorList)  # [alex_obj,egon_obj]#这个是添加不可列举的    #   解除多对多的关系    # book_obj=models.Book.objects.filter(title="红楼梦").first()    # authorList=models.Author.objects.filter(id__lt=3)    # print(book_obj.authorlist.remove(*authorList))#解除多对多关系的    # 清除关系方法    # book_obj = models.Book.objects.filter(title="红楼梦").first()    # book_obj.authorlist.clear()这是清除关系的    return HttpResponse("OK")def query(request):    # 一对多的查询    # 查询linux这本书的出版社的地址?    # linux_obj=models.Book.objects.filter(title="linux").first()#查出的是一个对象    #    # print(linux_obj.title)    # print(linux_obj.price)    # print(linux_obj.publishDate)    #    # print(linux_obj.publish.name)  # 与这本书对象关联的出版社对象直接点就行了    # print(linux_obj.publish.addr)  # 与这本书对象关联的出版社对象    # 人民出版社出版过的书籍的名字    # publish_obj=models.Publish.objects.filter(name="人民出版社")[0]    # print(publish_obj.bookList.all())  # 与这个出版社对象关联的所有书籍对象    # 多对多的查询    # 查询追风筝的人的所有作者的姓名和年龄    # book_obj=models.Book.objects.filter(title="追风筝的人")[0]    # print("=====",book_obj.authorlist.all()  )         #  与这本书关联的所有作者对象,集合对象    # authorlist=book_obj.authorlist.all()#这个是多个的就用.all()    # print(authorlist.values("name","age"))    # 查询yuan出版过的所有书籍的名字和价格    #author_yuan=models.Author.objects.get(name="yuan")    #print(author_yuan.book_set.all())  # 与这个作者关联的所有书籍对象    #print(author_yuan.bookList.all().values("title","price"))
# 反向查找(一对多)    # publish_obj = models.Publish.objects.filter(name="人民出版社")[0]    # print(publish_obj.book_set.all().values("title","price"))#反向查找找到的是一个集合    #多对多反向查询(多对多)    # author_obj=models.Author.objects.filter(name="frank").first()     #print(author_obj.book_set.all().values("title","price"))
# 一对一关系查询    # 正向查询    # 查询手机号为456的作者的姓名    detail_obj=models.Author2Detail.objects.filter(tel="456").first()    print(detail_obj.author.name)#  与tel="456"的Author2Detail关联的作者对象    # 反向查询    # 查询景丽洋的手机号    author_obj=models.AuthorA.objects.filter(name="景丽洋").first()    print(author_obj.author2detail.tel) # 789    print(author_obj.abc.tel) # 789    return HttpResponse("OK")

 

 

from django.db import models# Create your models here.class Book(models.Model):    nid = models.AutoField(primary_key=True)    title = models.CharField(max_length=32)    publishDate = models.DateField()    price = models.DecimalField(max_digits=5, decimal_places=2)    wordNum=models.IntegerField(default=0)#增属性的默认值可以自己设置    readNum=models.IntegerField(default=0)增属性的默认值可以自己设置    publish=models.ForeignKey("Publish",related_name="bookList")    authorlist=models.ManyToManyField("Author",related_name="bookList") # 多对多的关系,自动创建关系表    def __str__(self):        return self.titleclass Publish(models.Model):    name = models.CharField(max_length=32)    addr = models.CharField(max_length=32)    def __str__(self):        return self.nameclass Author(models.Model):    name=models.CharField(max_length=32)    age=models.IntegerField()    def __str__(self):        return self.nameclass AuthorA(models.Model):    name=models.CharField(max_length=32)    age=models.IntegerField()class Author2Detail(models.Model):    tel=models.IntegerField()    addr=models.CharField(max_length=32)    author=models.OneToOneField("AuthorA",related_name="abc")# class Book2Author(models.Model):#     book=models.ForeignKey("Book")#     author=models.ForeignKey("Author")

 

 

 

 

 

 

 

views

from django.shortcuts import render, HttpResponsefrom app01 import models# Create your views here.def addBook(request):    # pass    #建立一对一的关系    # models.Book.objects.create    # 建立一对多关系    # 方法一    # models.Book.objects.create(title="python", publishDate="1998-10-27", price="233", publish_id=1)    # 方法二    # publish_obj=models.Publish.objects.filter(name="人民出版社").first()#获得是一个集合要变成一个对象    # models.Book.objects.create(title="python", publishDate="1998-10-27", price="233", publish=publish_obj)    # 建立多对多关系    # author_obj1=models.Author.objects.filter(name="frank").first()    # author_obj2=models.Author.objects.filter(name="egon").first()    # book_obj=models.Book.objects.create(title="C", publishDate="1998-10-27", price="233", publish_id=2)    # book_obj.authorlist.add(author_obj1,author_obj2)    #建立多对多的关系最终版本    # book_obj = models.Book.objects.create(title="C", publishDate="1998-10-27", price="233", publish_id=2)    # authorList=models.Author.objects.all()    # book_obj.authorlist.add(*authorList)    # 解除关系的    # book_obj=models.Book.objects.filter(title="C#").first()    # author_obj=models.Author.objects.filter(name="frank").first()    # print( book_obj.authorlist.remove(author_obj))    # #清空关系    # book_obj=models.Book.objects.filter(title="C#").first()    # print( book_obj.authorlist.clear())    return HttpResponse("ok")def query(request):    # 正向查询    # 一对多查询    # 查询python的作者    # book_obj=models.Book.objects.filter(title="python")[0]    # print(book_obj.publish.name)    # print(book_obj.publish.addr)    # 多对多查询    # book_obj=models.Book.objects.filter(title="C").first()    # print(book_obj.authorlist.all().values("name","age"))    # 反向查找(一对多)    # publish_obj = models.Publish.objects.filter(name="人民出版社")[0]    # print(publish_obj.book_set.all().values("title","price"))#反向查找找到的是一个集合    #多对多反向查询(多对多)    author_obj=models.Author.objects.filter(name="frank").first()    print(author_obj.book_set.all().values("title","price"))    # 一对一关系查询    # 正向查询    # 查询手机号为456的作者的姓名    detail_obj = models.Author2Detail.objects.filter(tel="456").first()    print(detail_obj.author.name)  # 与tel="456"的Author2Detail关联的作者对象    # 反向查询    # 查询景丽洋的手机号    author_obj = models.AuthorA.objects.filter(name="景丽洋").first()    print(author_obj.author2detail.tel)  # 789#反向查询不用加_set    print(author_obj.abc.tel)  # 789    return HttpResponse("查到了")
数据增删

models

from django.db import models# Create your models here.class Book(models.Model):    nid=models.AutoField(primary_key=True)    title=models.CharField(max_length=32)    publishDate=models.DateField()    price=models.DecimalField(max_digits=5,decimal_places=2)    publish=models.ForeignKey("Publish")    authorlist=models.ManyToManyField("Author")    def __str__(self):        return  self.titleclass Publish(models.Model):    name=models.CharField(max_length=32)    addr=models.CharField(max_length=32)    def __str__(self):        return  self.nameclass Author(models.Model):    name=models.CharField(max_length=32)    age=models.IntegerField()    def __str__(self):       return  self.nameclass AuthorDetail(models.Model):    telphone=models.IntegerField()    addr=models.CharField(max_length=32)    author=models.OneToOneField("Author")    def __str__(self):        return self.addr
models代码

 

转载于:https://www.cnblogs.com/1a2a/p/7744935.html

你可能感兴趣的文章
android-samples-mvp
查看>>
oracle 11g r2安装
查看>>
关于自关联1
查看>>
存储控制器、MMU、flash控制器介绍
查看>>
hdu-1814(2-sat)
查看>>
自我反省
查看>>
反射,得到Type引用的三种方式
查看>>
pl sql练习(2)
查看>>
Problem B: 判断回文字符串
查看>>
谷歌浏览器,添加默认搜索引擎的搜索地址
查看>>
数据结构化与保存
查看>>
C# .net 获取程序运行的路径的几种方法
查看>>
为什么需要Docker?
查看>>
国内5家云服务厂商 HTTPS 安全性测试横向对比
查看>>
how to control project
查看>>
转 python新手容易犯的6个错误
查看>>
第四节 -- 列表
查看>>
Python入门学习笔记4:他人的博客及他人的学习思路
查看>>
webstorm里直接调用命令行
查看>>
关联规则算法之FP growth算法
查看>>