B站网课:点击蓝色字体跳转
或者复制链接至浏览器访问:https://www.bilibili.com/video/BV1vK4y1o7jH?p=16&vd_source=597e21cf34ffcdce468ba00be2177e8a
添加字段之后要记得进行迁移,变化才能同步至数据库
python3 manage.py makemigrations
python3 manage.py migrate







class Author(models.Model):
name = models.CharField('姓名',max_length=11,default='')
age = models.IntegerField('年龄')
email = models.EmailField('邮箱')
python3 manage.py makemigrations
python3 manage.py migrate
进入mysql:
mysql -u root -p
输入密码:123456
use mysite3;
show tables;
desc bookstore_author;



null尽量不要使用


修改过字段选项【添加或更改】均要执行makemigrations和migrate
python3 manage.py makemigrations
python3 manage.py migrate

更改表名
class Book(models.Model):
title = models.CharField('书名',max_length=50,default='')
price = models.DecimalField('价格',max_digits=7,
decimal_places=2,default=0.0)
class Meta:
db_table='book'
添加内容:
class Meta:
db_table='book'
数据库的迁移
python3 manage.py makemigrations
python3 manage.py migrate
修改表名前:

修改表名后:


from django.db import models
# Create your models here.
class Book(models.Model):
title = models.CharField('书名',max_length=50,default='',unique=True)
pub = models.CharField('出版社',max_length=100,default='')
price = models.DecimalField('价格',max_digits=7,
decimal_places=2,default=0.0)
market_price = models.DecimalField('价格', max_digits=7,
decimal_places=2, default=0.0)
class Meta:
db_table='book'
class Author(models.Model):
name = models.CharField('姓名',max_length=11,default='')
age = models.IntegerField('年龄',default=1)
email = models.EmailField('邮箱',null=True)
class Meta:
db_table='author'
数据库的迁移
python3 manage.py makemigrations
python3 manage.py migrate





推荐选择2:修改models.py






方案2较麻烦,更推荐方案1

代码发生变化后要重启Django Shell
python3 manage.py shell
from bookstore.models import Book
b1 = Book.objects.create(title='python',pub='清华大学出版社',price=20,market_price=25)

python3 manage.py shell
from bookstore.models import Book
b2 = Book(title='Django',pub='清华大学出版社',price=70,market_price=75)
b2.save()



Book:
from bookstore.models import Book
b3 = Book.objects.create(title='JQuery',pub='机械工业出版社',price=90,market_price=85)
b4 = Book.objects.create(title='Linux',pub='机械工业出版社',price=80,market_price=65)
b5 = Book.objects.create(title='HTML5',pub='清华大学出版社',price=105,market_price=90)
Author:
from bookstore.models import Author
b1 = Author.objects.create(name='王老师',age='28',email='wangweichao@tedu.cn')
b2 = Author.objects.create(name='吕老师',age='31',email='lvze@tedu.cn')
b3 = Author.objects.create(name='祁老师',age='30',email='qitx@tedu.cn')



a1=Book.objects.all()
a1
for book in a1:
... print(book.title)
...
注意:print 要有缩进

在models.py中修改
改完要重启Shell

输入exit()可以退出Shell
数据库的迁移:
python3 manage.py makemigrations
python3 manage.py migrate
效果:

按字段取数据

>>> a1 = Book.objects.values('title','pub')
>>> a1






可以进行各种组合


通过query可以查看对应的SQL语句


def all_book(request):
all_book = Book.objects.all()
return render(request,'bookstore/all_book.html',locals())
urls.py
path('bookstore/',include('bookstore.urls'))
bookstore/urls.py
path('all_book',views.all_book)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>查看所有书籍</title>
</head>
<body>
<table border="1">
<tr>
<th>id</th>
<th>title</th>
<th>pub</th>
<th>price</th>
<th>market_price</th>
<th>op</th>
</tr>
{% for book in all_book %}
<tr>
<td>{{ book.id }}</td>
<td>{{ book.title }}</td>
<td>{{ book.pub }}</td>
<td>{{ book.price }}</td>
<td>{{ book.market_price }}</td>
<td>
<a href="">更新</a>
<a href="">删除</a>
</td>
</tr>
{% endfor %}
</table>
</body>
</html>
python3 manage.py runserver



(持续更新中)