zoukankan      html  css  js  c++  java
  • Django之数据表增删改查

    Django数据增删改查:

    上课代码

    from django.shortcuts import render,HttpResponse
    
    # Create your views here.
    from app01 import models
    
    def 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.title
    
    
    class Publish(models.Model):
        name = models.CharField(max_length=32)
        addr = models.CharField(max_length=32)
    
        def __str__(self):
            return self.name
    
    class Author(models.Model):
        name=models.CharField(max_length=32)
        age=models.IntegerField()
        def __str__(self):
            return self.name
    
    
    class 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, HttpResponse
    from 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.title
    class Publish(models.Model):
        name=models.CharField(max_length=32)
        addr=models.CharField(max_length=32)
        def __str__(self):
            return  self.name
    class Author(models.Model):
        name=models.CharField(max_length=32)
        age=models.IntegerField()
        def __str__(self):
           return  self.name
    class AuthorDetail(models.Model):
        telphone=models.IntegerField()
        addr=models.CharField(max_length=32)
        author=models.OneToOneField("Author")
        def __str__(self):
            return self.addr
    models代码
  • 相关阅读:
    【Azure 应用服务】在Azure App Service多实例的情况下,如何在应用中通过代码获取到实例名(Instance ID)呢?
    【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
    【Azure Developer】使用Azure Key Vault 的Key签名后,离线验证的一些参考资料
    【Azure Function】调试 VS Code Javascript Function本地不能运行,报错 Value cannot be null. (Parameter 'provider')问题
    【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(Xms512m Xmx1204m)?
    【Azure API 管理】APIM添加Logtoeventhub的策略后,一些相关APIM与Event Hub的问题
    【Azure API 管理】为调用APIM的请求启用Trace 调试APIM Policy的利器
    【Azure 事件中心】China Azure上是否有Kafka服务简答
    【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)
    【Azure 微服务】记一次错误的更新Service Fabric 证书而引发的集群崩溃而只能重建
  • 原文地址:https://www.cnblogs.com/1a2a/p/7744935.html
Copyright © 2011-2022 走看看