django模型-使用mysql数据库

一、在虚拟环境中安装mysql包

pip install mysqlclient

 

二、在mysql中创建数据库

 

三、打开settings.py文件,修改DATABASES项

 

 

四、在models.py中定义模型类

 1 from django.db import models
 2 
 3 # Create your models here.
 4 
 5 #管理器是模型类的属性,用于将对象与数据表映射
 6 class BookInfoManager(models.Manager):
 7     def get_queryset(self):
 8         # return super(BookInfoManager,self).get_queryset().filter(isDelete=False)
 9         return super().get_queryset().filter(isDelete=False)    #修改管理器返回的原始查询集:重写get_queryset()方法
10 
11     def create_book(self,btitle,bpub_date):    # _init _方法已经在基类models.Model中使用,在自定义模型中无法使用。方法一:在自定义管理器中添加一个方法。推荐使用此方法
12         b=BookInfo()
13         b.btitle=btitle
14         b.bpub_date=bpub_date
15         b.bread=0
16         b.bcommet=0
17         b.isDelete=False
18         return b
19 
20 class BookInfo(models.Model):
21     btitle=models.CharField(max_length=20)
22     bpub_date=models.DateTimeField(db_column='pub_date')
23     bread=models.IntegerField(default=0)
24     bcommet=models.IntegerField(null=False)
25     isDelete=models.BooleanField(default=False)
26     class Meta():
27         db_table='bookinfo'    #元信息db_table:定义数据表名称,推荐使用小写字母,数据表的默认名称
28 
29     books1=models.Manager()    #为模型类指定管理器,且django不再为模型类生成名为objects的默认管理器。即models.Manager() 代替了objects()
30     books2=BookInfoManager()   #修改了原始管理器
31 
32     @classmethod
33     def create(cls,btitle,bpub_date):    # _init _方法已经在基类models.Model中使用,在自定义模型中无法使用。方法一:在模型类中增加一个类方法
34         b=BookInfo()
35         b.btitle=btitle
36         b.bpub_date=bpub_date
37         b.bread=0
38         b.bcommet=0
39         b.isDelete=False
40         return b
41 
42 class HeroInfo(models.Model):
43     hname=models.CharField(max_length=10)
44     hgender=models.BooleanField(default=True)
45     hcontent=models.CharField(max_length=1000)
46     isDelete=models.BooleanField(default=False)
47     book=models.ForeignKey(BookInfo,on_delete=models.CASCADE)

 

五、数据迁移

 

六、可进入shell命令检查模板,mysql命令检查数据表

 

posted on 2020-01-21 00:00  cherry_ning  阅读(279)  评论(0)    收藏  举报

导航