赞
踩
图书-英雄的关系为一对多
在bookApp下的models.py中编辑:
定义数据库模型
在设置中添加要实现的app,设置子应用:
为新应用设置迁移脚本:python manage.py makemigrations
将迁移脚本应用至数据库中:python manage.py migrate
刷新上一篇中建好的数据库:
设置一对多:
将迁移脚本应用至数据库中:python manage.py migrate
将迁移脚本应用至数据库中:python manage.py migrate
刷新数据库出现刚才新建的表:
总结:对项目的数据库模型操作
pip install ipython
python manage.py shell
In [1]: from bookApp.models import Book ,Hero
In [2]: # 查看操作
In [3]: Book.objects.all() #查看数据集,此时还未添加,所以返回为空
Out[3]: <QuerySet []>
In [4]: Hero.objects.all() #与上同理
Out[4]: <QuerySet []>
在数据库中增加一本书叫西游记,并且包含发布日期:
In [2]: # 查看操作 In [3]: Book.objects.all() Out[3]: <QuerySet []> In [4]: Hero.objects.all() Out[4]: <QuerySet []> In [5]: # 2.增加数据信息 In [6]: # 数据库表中的一条记录对应OOP里面的一个object In [7]: b1 = Book() In [8]: b1.name = "西游记" In [9]: from datetime import date In [10]: d1 = date(2000,1,4) In [11]: b1.pub_date = d1 In [12]: b1.save() In [13]: Book.objects.all() Out[13]: <QuerySet [<Book: Book object (1)>]>
最后的结果查看中虽然能看到包含有一本书,但是不能看到书名,在此调整应用models.py文件:
from django.db import models # Create your models here. #类对应数据库表,表名称默认为bookApp_book. class Book(models.Model): #属性对应数据库表的列名,默认会添加id这一列 name = models.CharField(max_length=40,verbose_name="书籍名称") pub_date = models.DateField(verbose_name="出版日期") #魔术方法,字符串友好展示,便于调试代码 def __str__(self): return self.name #类对应数据库表,表名称默认为bookApp_hero class Hero(models.Model): # 属性对应数据库表的列名,默认会添加id这一列 gender_choice = [ (1,'男'), (2,'女') ] name = models.CharField(max_length=20, verbose_name="人物名称") #性别只能选择男(1)或者女(2) gender = models.IntegerField(choices=gender_choice, verbose_name="性别") content = models.TextField(max_length=1000, verbose_name="人物描述") # 外键关联,如果删除书籍时,相关hero对应的书籍设置为空 Book = models.ForeignKey(Book,on_delete=models.SET_NULL,null=True, verbose_name="书籍id") # 魔术方法,字符串友好展示,便于调试代码 def __str__(self): return self.name
此处因为新加了功能,所以需要重新启动shell:
In [1]: from bookApp.models import Book,Hero
In [2]: Book.objects.all()
Out[2]: <QuerySet [<Book: 西游记>]>
再增加一个:
from bookApp.models import Book,Hero
In [2]: Book.objects.all()
Out[2]: <QuerySet [<Book: 西游记>]>
In [3]: from datetime import date
In [5]: b2 = Book(name="红楼梦",pub_date=date(1998,4,1))
In [6]: b2.save()
In [7]: Book.objects.all()
Out[7]: <QuerySet [<Book: 西游记>, <Book: 红楼梦>]>
步骤:
python manage.py shell
from datetime import date
b2 = Book(name="红楼梦",pub_date=date(1998,4,1))
b2.save()
Book.objects.all()
# 3.根据条件搜索并查看
In [9]: Book.objects.filter(name="西游记")
Out[9]: <QuerySet [<Book: 西游记>]>
In [11]: b1 = Book.objects.filter(name="西游记")
In [12]: b1
Out[12]: <QuerySet [<Book: 西游记>]>
In [13]: b1 = Book.objects.filter(name="西游记").first()
I
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。