标签: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()
三.多对多
标签:http 命令 外键 数据库操作 反向 ons 如图所示 存储 book
原文地址:https://www.cnblogs.com/gaoyukun/p/9028546.html