码迷,mamicode.com
首页 > 数据库 > 详细

Django(数据库操作)

时间:2018-05-12 15:06:46      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:http   命令   外键   数据库操作   反向   ons   如图所示   存储   book   

在django中,数据库的创建一般是在models.py中完成

一.单表操作(在表的创建过程中,不能同时对表进行增删等操作,要等表创建完再执行相关操作)

1.创建表

class AuthorDetail(models.Model):
    sex = models.BooleanField(max_length=1, choices=((0, ),(1, ),))
    email = models.EmailField()
    address = models.CharField(max_length=50)
    birthday = models.DateField()
    author = models.OneToOneField(Author)

#声明一个类AuthorDetail,表名就是类名的小写。sex,email等是字段名
在class声明完之后,在命令行中输入:1.python manage.py makemigrations 2.python manage.py migrate 然后点击view-toolwindow-database,将db.sqlite3拖入右边窗口
生成如图所示表
技术分享图片


 2.增(create)(暂且不会同时添加多条数据,要一条一条添加)

#create方式一:   Author.objects.create(name=‘Alvin‘)               #Author是类名,也是表名

    #create方式二:   Author.objects.create(**{"name":"alex"})      #create()参数如果是字典,前面**,如果是列表,前面*。

    #save方式一:     author=Author(name="alvin")
                    author.save()

    #save方式二:     author=Author()
                    author.name="alvin"
                    author.save()

3.删(delete)

Book.objects.filter(id=1).delete()    #filter是遍历,找到id为1的行并删除

4.改(update和save)

models.Book.objects.filter(id=3).update(title="PHP")  #只能用filter,不能用get

obj=models.Book.objects.filter(id=3)[0] obj.title="Python" obj.save()

5.查

#  <1>filter(**kwargs):      它包含了与所给筛选条件相匹配的对象

#  <2>all():                 查询所有结果

 

 

二.一对多操作

1.表的创建

#创建两张表Author/Book
#在Author表中添加外键,外键是在多的表中添加的(一本书可以由多个作者书写)。
class Author(models.Model):
    name=models.CharField(max_length=50)
    book=models.ForeignKey("Book",on_delete=models.CASCADE)    #Book表在Author表下创建,要写成"Book"。这句话的意思:book_id字段(自动生成)绑定Book表中的id
class Book(models.Model):
    address=models.CharField(max_length=50)
技术分享图片

 

技术分享图片

 2.查

技术分享图片

 

技术分享图片

 




#正向查询(由book_id所在表查询另一张表)

autor=Author.objects.get(id=4) #从Author表中得到id=4的一行,用变量autor存储 print(autor.book_id) #得到变量autor的book_id #book_id=2 print(autor.book.address) #通过Author得到book表中的address #中国1


#反向查询()
cls=Book.objects.get(id=1) #Book表中id=1的在Author表中对应id=1,2的两行
cls.author_set.all()

 

三.多对多

 

Django(数据库操作)

标签:http   命令   外键   数据库操作   反向   ons   如图所示   存储   book   

原文地址:https://www.cnblogs.com/gaoyukun/p/9028546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!