一、利用model生成数据表

在我们的APP目录下有文件models.py,编写如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
from django.db import models

class Student(models.Model):
id=models.CharField(max_length=100,primary_key=True)
username=models.CharField(max_length=100)
password=models.CharField(max_length=100)
email=models.CharField(max_length=100)
role=models.CharField(max_length=100)

def __unicode__(self):
return self.name
class Meta:
db_table = u'Student'

保存后,在命令行执行数据库同步操作:

1
2
3
4
5
6
7
8
9
10
Sing-2:hello Sing$ python3.5 manage.py makemigrations
Migrations for 'demo':
0001_initial.py:
- Create model Student
Sing-2:hello Sing$ python3.5 manage.py migrate
Operations to perform:
Apply all migrations: demo, admin, contenttypes, sessions, auth
Running migrations:
Rendering model states... DONE
Applying demo.0001_initial... OK

如果一切正常的话此时数据库中已经存在了Student表:

1
2
3
4
5
6
7
8
9
10
mysql> show tables;
+----------------------------+
| Tables_in_cms |
+----------------------------+
| Student |
| auth_group |
| auth_group_permissions |
...
+----------------------------+
20 rows in set (0.00 sec)

在APP目录下有文件夹migrations,这个与我们生成数据库同步脚本的操作有关,网上建议删除,但是删除之后执行完不生成数据表,解决方法是:删除除__init__.py文件以外的文件即可。而有时候明明有修改,但是在执行同步数据库的时候会报没有改动(No migrations to apply.),解决方法为:找到数据表django_migrations,删除该app名字的所有记录,重新执行。注意:在非空数据的表中执行删除操作一定注意

二、利用数据表生成model

工作中有时候是先有了数据库表才建立model,那么只需要执行如下命令即可自动创建:

1
python3.5 manage.py inspectdb

或者:

1
python3.5 manage.py inspectdb > demo/models.py

第一个命令会直接在命令行中打印出来:

而第二个命令会在指定路径下的指定文件中生成:

三、通过model插入数据

1
2
3
4
5
6
7
8
9
10
11
def add(request):
p1 = Student(id='1',username='Sing', password='sing',email='sing@163.com', role='老大')
p1.save()
p2 = Student(id='2',username='Sing', password='sing',email='sing@163.com', role='老二')
p2.save()
p3 = Student(id='3',username='Sing', password='sing',email='sing@163.com', role='老三')
p3.save()
p4 = Student(id='4',username='Sing', password='sing',email='sing@163.com', role='老四')
p4.save()
infos = Student.objects.all()
return render(request,'table.html',{'infos':infos})

四、通过model查看数据

1
2
3
def student(request):
infos = Student.objects.all()
return render(request,'table.html',{'infos':infos})

五、通过model修改数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def update(request):
p1 = Student.objects.get(id='1')
p1.username = '老大'
p1.save()
p2 = Student.objects.get(id='2')
p2.username = '老二'
p2.save()
p3 = Student.objects.get(id='3')
p3.username = '老三'
p3.save()
p4 = Student.objects.get(id='4')
p4.username = '老四'
p4.save()
infos = Student.objects.all()
return render(request,'table.html',{'infos':infos})

六、通过model删除数据

1
2
3
4
5
6
7
def delete(request):
p1 = Student.objects.get(id='1')
p1.delete()
p2 = Student.objects.get(id='2')
p2.delete()
infos = Student.objects.all()
return render(request,'table.html',{'infos':infos})

七、通过model删除全部数据

1
2
3
4
def deleteall(request):
Student.objects.all().delete()
infos = Student.objects.all()
return render(request,'table.html',{'infos':infos})